用于初始化控制器的 self 类



我遇到了从obj-c转换代码的问题。

controller = [[[self class] alloc] initWithNibName:name bundle:nil];

我试过这样的事情

self.init(nibName: name, bundle: nil)

但它给了我一个错误:使用元类型值构造类类型为"BaseViewController"的对象必须使用"必需"初始值设定项。如何解决这个问题?

正如 Ronak 指出的那样,您需要添加 init(coder aDecoder: NSCoder!) 方法。除此之外,您还需要添加init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)方法。因此,您的整体代码将如下所示:

  class func customInitializer() -> ViewController {
    return self.init(nibName: nil, bundle: nil)
  }
  required override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  }
  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
  }

您需要在 VC 中添加初始值设定项方法,如下所示:

required init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}

也可以在这里查看:

http://themainthread.com/blog/2014/08/initializing-view-controllers-in-swift.html

希望它能有所帮助:)

相关内容

最新更新