我正在尝试创建一种通用方法来呈现 UIViewController。
我按照以下步骤操作:
func getScreen<T>(screenID: String) -> T where T: UIViewController {
switch screenID {
case "ListVC":
let ListVC = getViewController(ListVC.self, "ListVC", identifier: "ListVC")
return ListVC as! T
case "ListVC1":
let ListVC1 = getViewController(ListVC1.self, "ListVC1", identifier: "ListVC1")
return ListVC1 as! T
default:
return UIViewController() as! T
}
}
用例是
let listVcRef = getScreen(screenId: "ListVC")
self.present(listVcRef, animated: false)
到目前为止,它按预期工作,我们面临的问题是我们无法从 listVcRef 访问 ListVC 的成员
喜欢
let listVcRef = getScreen(screenId: "ListVC")
listVcRef.lisstArry = [1,2,3,5]()
self.present(listVcRef, animated: false)
我收到以下错误 “UIViewController”类型的值没有成员
任何人都可以帮助我实现这个要求吗?提前致谢。
只需添加控制器类型
let listVcRef: ListVC = getScreen(screenId: "ListVC")
另外,我认为你不需要创建另一个带有 switch case 的通用函数,你可以直接使用 ```getViewController`` 函数。