【问题标题】:Convenience initialiser for UIViewController subclass with instance from nib?UIViewController 子类的便利初始化器,带有来自 nib 的实例?
【发布时间】:2015-10-06 10:53:01
【问题描述】:

我正在尝试初始化一个名为 TestControllerUIViewController 的子类。我有这个快速课程:

class TestController : UIViewController {

    let testString : String
    @IBOutlet weak var test: UITextField!

    required init(withString string: String) {

        self.testString = string
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

我还有一个名为 TestController 的 nib 文件,

里面是UIViewController 的一个实例。该文件的所有者为无(灰色的 NSObject),并且设计器中的 UIViewController 实例的类在身份检查器中设置为 TestController。有一个UITextField 实例作为出口。

问题是控制器没有从笔尖初始化(我认为),并且 textField 出口为零。

我的目标是允许通过自定义初始化程序以编程方式从 nib 初始化控制器实例。我究竟做错了什么?

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

    您有两个问题:首先,您的 nib(或 xib)没有正确创建(您不应该在界面生成器中看到 TestController)。解决这个问题的最简单方法是重新创建它:New File->Cocoa Touch Class->Create Subclass of UIViewController,别忘了勾选Also Create a XIB file

    第二个问题是您没有指定要加载的 nib。您应该在初始化器的nibName 参数中指定它:

    super.init(nibName: "NewlyCreatedXib", bundle: nil)
    

    当您解决这两个问题时,我相信您的代码会正常工作。

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多