从 splitviewcontroller 中的 masterVewController 访问 ROOT detailViewController
Posted
技术标签:
【中文标题】从 splitviewcontroller 中的 masterVewController 访问 ROOT detailViewController【英文标题】:Access the ROOT detailViewController from the masterVewController in a splitviewcontroller 【发布时间】: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 已经被锁定。
【问题讨论】:
【参考方案1】:尝试将其转换如下:
splitViewController?.viewControllers.forEach( (vc) in
if let startController = vc as? startViewController
--- Your code ---
return
)
【讨论】:
【参考方案2】:我最终需要将 StartViewController 放在 UINavigationController 中。然后我可以使用
访问第一个 viewControllervar detailStart = (splitViewController?.viewControllers[1] as? UINavigationController)?.viewControllers.first as? StartViewController
然后我用
隐藏了不需要的导航栏navigationController?.setNavigationBarHidden(true, animated: false)
放在 viewDidAppear 里面
这对我来说最终是一个不错的解决方案,因为无论如何我都需要将 CollectionViewController 放在 UINavigationController 中,但这似乎有点老套,也许不是最佳实践
【讨论】:
以上是关于从 splitviewcontroller 中的 masterVewController 访问 ROOT detailViewController的主要内容,如果未能解决你的问题,请参考以下文章
在 splitviewcontroller 中将数组从 masterview 发送到 detailview
替换 SplitViewController 中的 TableView
splitViewController 中的最终位置何时结束?
如何将 RootViewController 设置为 SplitViewController 中的分组表