从 splitviewcontroller 中的 masterVewController 访问 ROOT detailViewController
Access the ROOT detailViewController from the masterVewController in a splitviewcontroller
这是我的应用程序的布局
我正在尝试从 TableViewController 中访问 startViewController 的变量。
当我从 tableViewController 中打印 splitViewController (print(self.splitViewController?.viewControllers)
) 的 viewController 时,这就是我得到的结果
Optional([<UINavigationController: 0x12200f600>, <temp.CollectionViewController: 0x121e16860>])
第二个 viewController(temp.CollectionViewController
) 应该是 startViewController 类型。
我程序中的 startViewController 使用 segue 和 kind show 呈现 collectionViewController。当我调用 print(self.splitViewController?.viewControllers)
时,collectionViewController 已经被搜索到。
尝试按如下方式转换:
splitViewController?.viewControllers.forEach({ (vc) in
if let startController = vc as? startViewController {
--- Your code ---
return
}
})
我最终需要将 StartViewController 放入 UINavigationController 中。然后我可以使用
访问第一个 viewController
var detailStart = (splitViewController?.viewControllers[1] as? UINavigationController)?.viewControllers.first as? StartViewController
然后我用
隐藏了不需要的导航栏
navigationController?.setNavigationBarHidden(true, animated: false)
放在viewDidAppear里面
这最终对我来说是一个不错的解决方案,因为无论如何我都需要将 CollectionViewController 放在 UINavigationController 中,但这似乎有点老套,也许不是最佳实践
这是我的应用程序的布局
我正在尝试从 TableViewController 中访问 startViewController 的变量。
当我从 tableViewController 中打印 splitViewController (print(self.splitViewController?.viewControllers)
) 的 viewController 时,这就是我得到的结果
Optional([<UINavigationController: 0x12200f600>, <temp.CollectionViewController: 0x121e16860>])
第二个 viewController(temp.CollectionViewController
) 应该是 startViewController 类型。
我程序中的 startViewController 使用 segue 和 kind show 呈现 collectionViewController。当我调用 print(self.splitViewController?.viewControllers)
时,collectionViewController 已经被搜索到。
尝试按如下方式转换:
splitViewController?.viewControllers.forEach({ (vc) in
if let startController = vc as? startViewController {
--- Your code ---
return
}
})
我最终需要将 StartViewController 放入 UINavigationController 中。然后我可以使用
访问第一个 viewControllervar detailStart = (splitViewController?.viewControllers[1] as? UINavigationController)?.viewControllers.first as? StartViewController
然后我用
隐藏了不需要的导航栏navigationController?.setNavigationBarHidden(true, animated: false)
放在viewDidAppear里面
这最终对我来说是一个不错的解决方案,因为无论如何我都需要将 CollectionViewController 放在 UINavigationController 中,但这似乎有点老套,也许不是最佳实践