使用segue自定义初始化

时间:2015-07-01 17:23:43

标签: ios swift initialization uistoryboard uistoryboardsegue

我最近开始使用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方法可能存在一些问题。

  1. 如果我向MyController添加依赖项,我将无法获得编译器的帮助,因为我需要处理新的依赖项。

  2. 将此代码交给其他开发人员时,他们更难以推断应在MyController上设置哪些依赖项以便安全使用它。

  3. 在Swift中,我必须解包并转换segue才能设置依赖关系。

  4. 任何想法都会有所帮助!感谢

1 个答案:

答案 0 :(得分:0)

segue的想法是在没有任何代码的情况下创建和呈现UIViewController。对于开发人员来说,通过获取应用程序流获得的积分远远超过初始化问题(但仍然可以将它们两者都很好)。 我认为如果你要制作一些具有所需功能的DataSource协议,那么很难错过这些点。 如果有人有更好的想法,那么学习会很好......