将依赖项传递给标签栏视图控制器

时间:2018-07-03 16:28:29

标签: swift core-data uitabbarcontroller

我正在尝试重构应用程序以对核心数据堆栈使用依赖项注入。

这里有一个很好的解释: 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

但这似乎无济于事。

1 个答案:

答案 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)
                }
            }
        }
    }