用于UIViewController子类的便捷初始化器,其实例来自nib?
问题描述:
我试图初始化一个名为TestController
的UIViewController
的子类。我有这个迅速类:用于UIViewController子类的便捷初始化器,其实例来自nib?
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")
}
}
里面是UIViewController
一个实例。该文件的所有者为none(NSObject为灰色),并且设计器中的UIViewController实例的类在身份检查器中设置为TestController。有一个UITextField
实例作为插座。
的问题是,所述控制器不从笔尖(我认为)初始化,并且将TextField出口是零。
我的目标是允许通过自定义初始化程序从编程的初始化控制器的实例。我究竟做错了什么?
答
您有两个问题:首先,您的笔尖(或xib)未正确创建(您不应在界面构建器中看到TestController
)。解决这个问题的最简单方法是重新创建:新建文件 - >可可触摸讲座>创建子类的UIViewController
,不要忘记检查Also Create a XIB file
的第二个问题是,你不指定什么你想加载的笔尖。你应该在nibName
参数初始化的指定:
super.init(nibName: "NewlyCreatedXib", bundle: nil)
当你解决这两个问题,我相信你的代码将正常工作。