【发布时间】:2018-11-12 13:44:04
【问题描述】:
我有一个没有任何 NIB 文件的自定义 UITabBarController。所有模块的导航控制器都是在 viewDidLoad 方法中使用 creator 函数创建的。我想通过这样的创建者函数添加带有参数的 coreDataStack:
override func viewDidLoad() {
super.viewDidLoad()
let aModuleNavCont = aModuleBuilder.createaModule(coreDataStack) as! UINavigationController
...
}
但在此之前,我必须在我自己的 UITabBarController 类中设置 coreDataStack 属性。 我写了这个初始化:
init(coreDataStack: CoreDataStack) {
self.coreDataStack = coreDataStack
super.init(nibName: nil, bundle: nil)
}
但它说:'必需'初始化程序'init(coder:)'必须由'UITabBarController'的子类提供因此我用Xcode生成了这个:
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
现在构建成功,应用运行良好(看起来不错),但我有预感这不是很好的解决方案。
我尝试在所需的 init 中添加 super.init(coder: aDecoder) 行,但它说“Property 'self.coreDataStack' not initialized at super.init call”。
我已经尝试了几件事,但我不知道该怎么做才能很好地处理这个问题。你能帮忙吗?
提前感谢您提供的任何帮助。
【问题讨论】:
标签: ios swift uikit uitabbarcontroller nib