5 initialization uinavigationcontroller ios swift
我创建了一个自定义UINavigationController如下-
class NavigationViewController: UINavigationController {
override init(rootViewController: UIViewController) {
super.init(rootViewController: rootViewController)
setup()
}
required init?(coder aDecoder: NSCoder) {
return nil
}
func setup() {
}
}
Run Code Online (Sandbox Code Playgroud)
我使用上面的导航控制器如下-
let viewController = NavigationViewController(rootViewController: UIViewController())
present(viewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
上面的代码在 iOS 13 中按预期工作,但在 iOS 12 中失败并出现以下错误
致命错误:对类“appName.NavigationViewController”使用未实现的初始化程序“init(nibName:bundle:)”
添加以下初始化程序可以解决问题
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
Run Code Online (Sandbox Code Playgroud)
谁能指出为什么上面的初始化程序在 iOS 13 中不需要,但在 iOS 12 中需要?