Push ViewController с кодером aDecoder: NSCoder
Я пытаюсь подтолкнуть контроллер представления с помощью:
var vc2 = ViewController2()
self.navigationController?.pushViewController(vc2, animated: false
)
но в моем втором контроллере представления у меня есть:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Но я получаю ошибку Missing argument for parameter 'coder' in call
в первом ViewController. Что идет в скобках в первом контроллере представления?
2 ответа
Решение
Есть два способа решить эту проблему:
Самый простой способ - просто вызвать функцию, передав ноль параметрам:
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()
class ViewController2: UIViewController {
convenience init () {
self.init(nibName: nil, bundle: nil)
}
}
Теперь вы можете позвонить ViewController2()