【问题标题】:Using a custom init (with parameters) in prepareForSegue在 prepareForSegue 中使用自定义初始化(带参数)
【发布时间】:2015-10-23 13:20:04
【问题描述】:

我想为在 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),而不必使用隐式展开的可选选项。具有上述方法的视图控制器有数据要传入FilterViewController自定义init。

是否有为 segue.destinationViewController 使用自定义初始化的模式,以便我可以传递参数?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

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

    如果您想使用自定义初始化程序,则必须在代码中创建控制器,而在这种情况下不使用情节提要。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您提供详细信息。在这种情况下,我认为使用隐式展开的选项可能更直接。
      猜你喜欢
      • 2023-03-11
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多