迅速-通过覆盖init从情节提要中初始化视图控制器

亚当

我在情节提要中定义了一个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
}

但是编译器不喜欢这样。有任何想法吗?

史蒂芬·麦格拉思(Steven McGrath)

便利构造函数必须始终委托给同一类的指定构造函数,并且指定构造函数必须调用超类构造函数。

由于超类没有合适的初始化器,因此,最好使用类工厂方法来提供服务:

static func instantiate() -> SearchTableViewController
{
    return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SearchTableViewController") as! SearchTableViewController
}

然后使用:

var myViewController = SearchTableViewController.instantiate()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章