ios - 在 prepareForSegue 中使用自定义初始化(带参数)

标签 ios swift

我想为在 prepareForSegue 中初始化的 View Controller 使用自定义初始化程序(带有传递参数,用于依赖项注入(inject))。我不明白 View Controller 是如何在 prepareForSegue 中初始化的,所以不确定正确的模式。

这是我的 View Controller 中的 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),而不必使用隐式解包可选。具有上述方法的 View Controller 具有要传递到 FilterViewController 自定义初始化的数据。

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

最佳答案

prepareForSegue 被调用时,目标 View Controller 已经初始化。这是由 Storyboard 系统为您完成的,它最终会在您的 View Controller 上调用 initWithCoder:。您可以在此处初始化您的 let 属性。

如果您想使用自定义初始化程序,则必须在代码中创建 Controller ,而无需在这种情况下使用 Storyboard。

关于ios - 在 prepareForSegue 中使用自定义初始化(带参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303346/

相关文章:

ios - 哪个是通用 iOS 应用启动画面 iOS 12 的最佳方式?

iphone - 关于 if 和 else 部分在 iPhone sdk 中的导航 Controller 类中的混淆

ios - 如何拖动 uiimageview 而不重叠 View ?

ios - 是否可以将 Unity 应用程序集成到 iOS 应用程序中?

ios - EXC_BAD_ACCESS 当访问从另一个方法返回的 fetchrequest 的结果时

ios - 无法隐藏网络事件指示器

ios - 执行 Segue 时无法识别的选择器实例

ios - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 'AVCaptureVideoPreviewLayer'

ios - EXC_BAD_ACCESS UITable 在 numberOfRowsInSection 中设置 tableHeaderView

swift - 如何在 Swift 中使用反射获取所有类初始化器