呈现 UIViewController 的常用方法

问题描述 投票:0回答:1

我正在尝试创建一种通用方法来呈现 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”类型的值没有成员

任何人都可以帮助我实现这个要求吗?提前致谢。

ios swift uiviewcontroller screen
1个回答
0
投票

只需添加控制器类型

let listVcRef: ListVC = getScreen(screenId: "ListVC")

另外,我认为你不需要创建另一个带有 switch case 的通用函数,你可以直接使用 ```getViewController`` 函数。

© www.soinside.com 2019 - 2024. All rights reserved.