【问题标题】:Write init method to pass model to view controller before viewDidLoad [duplicate]在viewDidLoad之前编写init方法将模型传递给视图控制器[重复]
【发布时间】:2017-10-11 16:09:13
【问题描述】:

我不熟悉情节提要,我有 UIViewController 的超类,它有这样的 init 方法:

 convenience init(viewModel: Any){
        self.init()
        self.viewModel = viewModel
    }

所以,当viewDidLoad 被调用时,我已经有了不为零的viewModel。

我可以很容易地用这样的模型创建视图控制器:

let pvc = ProductViewController(viewModel: pvm)
self.navController?.pushViewController(pvc, animated: true)

如何将此功能添加到情节提要?我想要的是,将模型传递给构造函数,以确保在调用 viewDidLoad 时模型存在。

【问题讨论】:

  • viewDidLoad之前为什么要传模型?我了解在 macOS 中,Cocoa 绑定在初始化后立即期望值。但是 iOS 中的哪些功能需要 viewDidLoad 之前的有效值?共享类(单例)不是一个选项吗?

标签: ios iphone swift uiviewcontroller


【解决方案1】:

不幸的是,故事板无法做到这一点,因为视图控制器是预先初始化的。

不过,我写了一个 post 来让视图控制器和视图模型关联更加明确。

【讨论】:

  • 您的解决方案很棒!
猜你喜欢
  • 2015-12-14
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多