我正在尝试重构应用程序以对核心数据堆栈使用依赖项注入。
这里有一个很好的解释: http://cleanswifter.com/dependency-injection-with-storyboards/
我的问题是,在我的应用程序中,由uittabbarcontroller链接的视图控制器嵌入在导航控制器中,因此此代码:
if let tab = window?.rootViewController as? UITabBarController {
for child in tab.viewControllers ?? [] {
if let top = child as? PersistenceStackClient {
top.set(stack: persistenceStack)
}
}
}
再也看不到它们。
我的直觉是,我需要将for child in
更改为引用导航控制器子级的子项,但所有尝试均失败。
我想我需要一些类似的东西:
for child in tab.navigationController?.viewControllers
但这似乎无济于事。
答案 0 :(得分:0)
我认为我已经解决了这个问题:
if let tab = window?.rootViewController as? UITabBarController {
for child in tab.viewControllers ?? [] {
for nav in child.childViewControllers {
if let top = nav as? PersistenceStackClient {
top.setStack(stack: coreDataStack)
}
}
}
}