在prepareForSegue中使用自定义init(带参数)

时间:2015-10-23 13:20:04

标签: ios swift

我想在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的模式,以便我可以传递参数?

2 个答案:

答案 0 :(得分:1)

当调用prepareForSegue时,目标视图控制器已经初始化。这是由Storyboard系统为您完成的,最终将在您的视图控制器上调用initWithCoder:。您可以在此初始化let属性。

如果您想使用自定义初始化程序,则必须在代码中创建控制器,而不必使用故事板。

答案 1 :(得分:1)

要完成Joris所说的那样,在这种情况下,你可以另外为你的ViewController使用.xib分隔文件