首页 > 解决方案 > Xcode 从 Storyboard 迁移

问题描述

我有一个使用情节提要的 Xcode 项目。

我有典型的设置,

现在,该项目正在发展,使得使用故事板变得不切实际。我们正在采用代码方法从代码中加载视图。我们面临的问题是如何在调用“viewdidload”之前将数据传递给新视图,或者使用什么正确的过程。

我们正在使用加载视图

    let nib = UINib(nibName: "TestView", bundle: nil)
    let view = nib.instantiate(withOwner: self, options: nil).first as! TestViewController
    view.delegate = self
    view.dataModel = TestViewDataModel()
    present(view, animated: true, completion: nil)  

我们遇到的问题是“实例化”调用 viewdidload 但理想情况下它需要来自“数据模型”的数据

谢谢

标签: swift

解决方案


添加一个新的初始化程序TestViewController,接受您需要的任何数据作为参数。

从其中调用super.init(nibName: "TestView", bundle: nil). UIViewController的初始化程序将负责查找 nib,从中实例化自身,并将自身设置为所有者。

class TestViewController: UIViewController {

    let dataModel: TestViewDataModel

    init(dataModel: TestViewDataModel) {
        super.init(nibName: "TestView", bundle: nil)
        self.dataModel = dataModel
    }

    //...
}

推荐阅读