Ответ 1
Проблема заключается в следующем: если вы объявляете любые сохраненные свойства без начального значения, вы должны реализовать свой собственный инициализатор для их инициализации. см. этот документ.
Вот так:
var currentDetailViewController: UIViewController
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
currentDetailViewController = UIViewController()
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
convenience override init() {
self.init(nibName: nil, bundle: nil)
}
required init(coder aDecoder: NSCoder) {
currentDetailViewController = UIViewController()
super.init(coder:aDecoder)
}
Но я думаю, что это не, что вы хотите.
Правильное решение зависит от того, где вы инициализируете currentDetailViewController
.
Если вы всегда инициализируете его в viewDidLoad
, вы можете объявить его как "Неявно отформатированный необязательный"
var currentDetailViewController: UIViewController!
override viewDidLoad() {
super.viewDidLoad()
self.currentDetailViewController = DetailViewController()
}
в противном случае, если currentDetailViewController
может быть nil
, вы должны объявить его как "Необязательный"
var currentDetailViewController: UIViewController?