使用编码器aDecoder推送ViewController:NSCoder

时间:2015-06-21 01:17:13

标签: ios swift nscoder

我试图使用以下方式推送视图控制器:

var vc2 = ViewController2()

self.navigationController?.pushViewController(vc2, animated: false

但在我的第二个视图控制器中,我有:

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

但是我在第一个ViewController中得到了错误Missing argument for parameter 'coder' in call。第一个视图控制器中括号内的内容是什么?

2 个答案:

答案 0 :(得分:2)

有两种方法可以解决此问题:

简单的方法,只需将函数调用nil传递给参数:

var vc2 = ViewController2(nibName: nil, bundle: nil)

最好的方法是在班级中创建便利初始化器:

class ViewController2: UIViewController {
    required init(coder aDecoder: NSCoder) {
        fatalError("This class does not support NSCoding")
    }
    override init (frame : CGRect) {
        super.init(frame : frame)
    }
    convenience override init () {
        self.init(frame:CGRectZero)
    }
}

现在你可以打电话:

var vc2 = ViewController2()

答案 1 :(得分:1)

class ViewController2: UIViewController {
    convenience init () {
        self.init(nibName: nil, bundle: nil)
    }
} 

现在您可以致电ViewController2()