在Swift中调用参数'coder'时缺少参数

aqu*_*ach 0 xcode ios swift

class SecondViewController:UIViewController {
  required init(coder aDecoder: NSCoder){
    super.init(coder: aDecoder)
    //Custom logic here
  }
}
Run Code Online (Sandbox Code Playgroud)

相当新手的问题:

一个视图控制器(SecondViewController),UIViewController固有的需要一个指定的init函数,如上所述.

在这种情况下,我应该怎么称呼它,因为我不确定"编码器"应该是什么价值?我以前称控制器为:SecondViewController(),但它给出:

Missing argument for parameter 'coder' in call
Run Code Online (Sandbox Code Playgroud)

我理解必须提供编码器参数,但想知道它的价值来自何处.

aqu*_*ach 6

感谢@Chackle的回答.最后,我想出的解决方案如下.

我想要的是:

  • 继承我SecondViewControllerUIViewController
  • 只需初始化任何新SecondViewControllerSecondViewController()

解:

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

    init() {
        super.init(nibName: nil, bundle: nil)
        //Do whatever you want here
    }
Run Code Online (Sandbox Code Playgroud)

"required init(coder aDecoder: NSCoder)"如果你创建的子类是必须的UIViewController.所以"super.init(nibName: nil, bundle: nil)",因为这是UIViewController初始化的方式.