我在 Storyboard中定义了一个 ViewController 实例。我可以通过以下方式初始化它
var myViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("myViewControllerIdentifier") as! ViewController
有没有办法覆盖 ViewController 的 init 方法,以便我可以使用初始化它
var myViewController = ViewController()
我尝试覆盖 init
convenience init() {
self = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SearchTableViewController") as! SearchTableViewController
}
但是编译器不喜欢那样。有什么想法吗?
最佳答案
便利构造器必须始终委托(delegate)给同一类的指定构造器,并且指定构造器必须调用父类(super class)构造器。
由于父类(super class)没有合适的初始化器,类工厂方法可能会更好:
static func instantiate() -> SearchTableViewController
{
return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SearchTableViewController") as! SearchTableViewController
}
然后使用:
var myViewController = SearchTableViewController.instantiate()
关于swift - 通过覆盖 init 从 Storyboard初始化 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821883/