我最近开始使用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才能设置依赖关系。
任何想法都会有所帮助!感谢
答案 0 :(得分:0)
segue的想法是在没有任何代码的情况下创建和呈现UIViewController
。对于开发人员来说,通过获取应用程序流获得的积分远远超过初始化问题(但仍然可以将它们两者都很好)。
我认为如果你要制作一些具有所需功能的DataSource协议,那么很难错过这些点。
如果有人有更好的想法,那么学习会很好......