我正在尝试创建一个UINavigationController的子类,它接受其他依赖项。我还希望能够在初始化时创建和指定根视图控制器。我有这段代码:
init(rootVC: UIViewController, authUser: AppUser) {
self.authUser = authUser
super.init(rootViewController: rootVC)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
但是,在尝试初始化时,我收到此错误:
致命错误:使用未实现的初始化程序&#init;(nibName:bundle :)' 对于班级
我已经查看了其他SO答案,特别是this one,它建议通过覆盖init(nibName:bundle :)方法来解决问题。但是,这意味着我无法正确注入用户依赖项。如何最好地解决这个问题?
答案 0 :(得分:1)
您是否尝试过convenience
初始化?
convenience init(rootVC: UIViewController, authUser: AppUser) {
self.init(rootViewController: rootVC)
}
如果您要进行convenience
初始化,请阅读this question。
修改强>
您可以这样设置AppUser
:
final class Navigation: UINavigationController {
private(set) var authUser: AppUser!
convenience init(rootVC: UIViewController, authUser: AppUser) {
self.init(rootViewController: rootVC)
self.authUser = authUser
}
}
修改强>
关注this link。
这是初始化接收器和推送的便捷方法 导航堆栈上的根视图控制器。每个导航 stack必须至少有一个视图控制器才能充当root。