【问题标题】:Access the ROOT detailViewController from the masterVewController in a splitviewcontroller从 splitviewcontroller 中的 masterVewController 访问 ROOT detailViewController
【发布时间】:2019-12-14 21:44:35
【问题描述】:

这是我的应用程序的布局

我正在尝试从 TableViewController 中访问 startViewController 的变量。

当我从 tableViewController 中打印 splitViewController (print(self.splitViewController?.viewControllers)) 的视图控制器时,这就是我得到的

Optional([<UINavigationController: 0x12200f600>, <temp.CollectionViewController: 0x121e16860>])

第二个 viewController(temp.CollectionViewController) 应该是 startViewController 类型。

我的程序中的 startViewController 使用 segue 和 kind show 呈现 collectionViewController。当我调用print(self.splitViewController?.viewControllers) 时,collectionViewController 已经被锁定。

【问题讨论】:

    标签: ios swift uisplitviewcontroller


    【解决方案1】:

    尝试将其转换如下:

    splitViewController?.viewControllers.forEach({ (vc) in
      if let startController = vc as? startViewController {
        --- Your code ---
        return
      }            
    })
    

    【讨论】:

      【解决方案2】:

      我最终需要将 StartViewController 放在 UINavigationController 中。然后我可以使用

      访问第一个 viewController
      var detailStart = (splitViewController?.viewControllers[1] as? UINavigationController)?.viewControllers.first as? StartViewController
      

      然后我用

      隐藏了不需要的导航栏
      navigationController?.setNavigationBarHidden(true, animated: false)
      

      放在 viewDidAppear 里面


      这对我来说最终是一个不错的解决方案,因为无论如何我都需要将 CollectionViewController 放在 UINavigationController 中,但这似乎有点老套,也许不是最佳实践

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多