【发布时间】:2015-07-01 17:23:43
【问题描述】:
我最近开始使用 UIStoryboards,希望有人可以帮助我解决 segue 处理初始化方式的问题。基本上这就是我习惯使用自定义初始化程序来初始化控制器的方式。
let myController = MyController(dependency: myDependency)
navigationController?.pushViewController(myController, animated: true)
但是使用 segue,我必须在 prepareForSegue 中设置属性,并且没有机会以安全的方式设置依赖项。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let identifier = segue.identifier {
if identifier == "ShowMyController" {
let myController = segue.destinationViewController as! MyController
myController.dependency = myDependency
}
}
}
我认为 prepareForSegue 处理这个问题的方式很糟糕。我看到了自定义初始化避免的 prepareForSegue 方法的一些可能问题。
如果我向 MyController 添加依赖项,我将无法从编译器获得帮助,因为我有一个需要处理的新依赖项。
当将此代码交给其他开发人员时,他们很难推断应该在 MyController 上设置哪些依赖项才能安全使用它。
在 Swift 中,我必须解包并转换 segue 才能设置依赖项。
任何想法都会有所帮助!谢谢
【问题讨论】:
标签: ios swift initialization uistoryboard uistoryboardsegue