使用编码器 aDecoder: NSCoder 推送 ViewController
Push ViewController with coder aDecoder: 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
。第一个视图控制器中括号中的内容是什么?
您可以通过两种方式解决此问题:
最简单的方法,调用传递nil参数的函数:
var vc2 = ViewController2(nibName: nil, bundle: nil)
最好的方法是在 class:
中创建便利的初始值设定项
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()
class ViewController2: UIViewController {
convenience init () {
self.init(nibName: nil, bundle: nil)
}
}
现在你可以调用ViewController2()
我正在尝试使用以下方式推送视图控制器:
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
。第一个视图控制器中括号中的内容是什么?
您可以通过两种方式解决此问题:
最简单的方法,调用传递nil参数的函数:
var vc2 = ViewController2(nibName: nil, bundle: nil)
最好的方法是在 class:
中创建便利的初始值设定项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()
class ViewController2: UIViewController {
convenience init () {
self.init(nibName: nil, bundle: nil)
}
}
现在你可以调用ViewController2()