我想在prepareForSegue中初始化的视图控制器中使用自定义初始化程序(带有传递参数,用于依赖项注入)。我不清楚究竟如何在prepareForSegue中初始化视图控制器,因此不能确定正确的模式。
以下是我的视图控制器中的prepareForSegue代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "FilterPopover" {
let vc = segue.destinationViewController as! FilterViewController
vc.popoverPresentationController!.delegate = self
}
}
我想在创建时将数据传递给FilterViewController,这样我就可以使属性成为常量(let,而不是var),而不必使用隐式的unwrapped可选项。具有上述方法的视图控制器将数据传递给FilterViewController自定义init。
是否有为segue.destinationViewController使用自定义init的模式,以便我可以传递参数?
答案 0 :(得分:1)
当调用prepareForSegue
时,目标视图控制器已经初始化。这是由Storyboard系统为您完成的,最终将在您的视图控制器上调用initWithCoder:
。您可以在此初始化let
属性。
如果您想使用自定义初始化程序,则必须在代码中创建控制器,而不必使用故事板。
答案 1 :(得分:1)
要完成Joris所说的那样,在这种情况下,你可以另外为你的ViewController使用.xib分隔文件