【问题标题】:Passing data to "unknown" viewcontroller将数据传递给“未知”视图控制器
【发布时间】:2018-03-20 02:25:00
【问题描述】:

我有很多视图控制器,分布在许多故事板上。

只有知道视图控制器标识符时,有什么方法可以将数据传递给视图控制器。

viewcontroller 标识符和 storyboard 名称是从 plist 中读取的,并且 viewcontroller 是这样加载的:

let storyboard = UIStoryboard(name: plistdata.storyboard, bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier)
navigationController?.pushViewController(vc, animated: true)

由于我无法将视图控制器转换为正确的类,因此我无法设置数据。可以从字符串中转换一个类吗,比如

let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier) as! ClassFromString("MyDestinationViewController")

或者让数据模型跟踪正在推送哪个视图控制器,并在目标视图控制器加载后立即在目标视图控制器中获取必要的数据是更好的方法吗?

【问题讨论】:

    标签: ios swift xcode uiviewcontroller uistoryboard


    【解决方案1】:

    当您不知道某物的类别,但无论如何您希望能够与之交谈时,这就是协议的用途。如果您的每个匿名视图控制器类都采用 MyProtocol,并且如果 MyProtocol 需要 takeData 方法,那么您可以将 vc 转换为 MyProtocol 并调用 takeData,而无需进一步了解该视图控制器是什么类。

    【讨论】:

      【解决方案2】:

      我认为最好的方法是 Segue...因为 Segue 使您的 ViewControllers 成为数组,所以很容易推送、弹出和发送数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        相关资源
        最近更新 更多