在以下代码中,基于字符串比较,我决定将显示哪个VC。避免在swift中重复代码
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
dataObj = frc.object(at: indexPath) as! Data_Object
var pvc: UIViewController?
if dataObj.type == "X" {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "XVC") as! XVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
} else if dataObj.type == "Y" {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "YVC") as! YVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
} else {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "ZVC") as! ZVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
}
obj.modalPresentationStyle = .popover
let popPVC = pvc?.popoverPresentationController
popPVC?.sourceView = self.view
self.present(pvc!, animated: true, completion: nil)
}
现在,除了类名,所有的代码都是重复的,我想避免这种情况。但是,迅速没有NSClassFromString
我该如何做到这一点?我应该使用泛型/模板吗?有什么建议么!
对不起,如果我在这里失去了一些愚蠢的东西。
是的,你可以创建简单的功能实现这个字符串(说明:SomeViewController.self) –