我在情节提要中定义了一个ViewController实例。我可以通过以下方式对其进行初始化
var myViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("myViewControllerIdentifier") as! ViewController
有没有一种方法可以覆盖ViewController的init方法,以便可以使用
var myViewController = ViewController()
我尝试覆盖初始化
convenience init() {
self = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SearchTableViewController") as! SearchTableViewController
}
但是编译器不喜欢这样。有任何想法吗?
便利构造函数必须始终委托给同一类的指定构造函数,并且指定构造函数必须调用超类构造函数。
由于超类没有合适的初始化器,因此,最好使用类工厂方法来提供服务:
static func instantiate() -> SearchTableViewController
{
return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SearchTableViewController") as! SearchTableViewController
}
然后使用:
var myViewController = SearchTableViewController.instantiate()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句