【发布时间】:2019-11-28 05:23:30
【问题描述】:
我尝试创建一个自定义的UINavigationController 类如下-
class NavigationController: UINavigationController {
private let user: User
init(user: User, rootViewController: UIViewController) {
self.user = user
super.init(rootViewController: rootViewController)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
上述代码在运行时失败并出现以下错误-
致命错误:对“app.NavigationController”类使用未实现的初始化程序“init(nibName:bundle:)”
我尝试通过添加初始化程序来解决问题
class NavigationController: UINavigationController {
private let user: User
init(user: User, rootViewController: UIViewController) {
self.user = user
super.init(rootViewController: rootViewController)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
编译器抛出错误“Property 'self.user' not initialized at super.init call”。
有没有办法在不将 user 属性设置为隐式解包可选的情况下解决此问题?
【问题讨论】:
标签: ios swift uinavigationcontroller initializer