UISplitViewController 内的 iOS 13 UITabBarController 未正确折叠
Posted
技术标签:
【中文标题】UISplitViewController 内的 iOS 13 UITabBarController 未正确折叠【英文标题】:iOS 13 UITabBarController inside of a UISplitViewController not collapsing correctly 【发布时间】:2020-04-20 16:53:04 【问题描述】:我在带有 iPad 的 UISplitViewController 内使用 UITabBarController。在 ios12 上,这工作正常,标签栏控制器折叠成“更多”标签。
在 iOS13 上运行相同的代码会导致标签栏控制器无法正确折叠视图,如下所示:
编辑/更新: 这可以通过“Master Detail”Xcode 模板重现。在不修改代码的情况下,将“主”导航控制器的根视图控制器设置为选项卡栏控制器并添加 >6 个选项卡,如下所示:
导致同样的混乱:
这让我相信不是我自己的自定义代码是罪魁祸首,而是我不明白 UISplitViewControllers 在 iOS13 中具体如何运作。
有人遇到过这种情况吗?我尝试了this question, 的解决方案,但不幸的是并没有改变任何东西。
【问题讨论】:
【参考方案1】:原来我对linked question 的cmets 的挖掘不够深入。我能够通过在启动后以编程方式创建一个全新的 UISplitViewController 来解决这个问题,它可以正确地获取特征集合。代码看起来像这样,将 WIQSplitViewController 替换为您的子类,并将 tabController 初始化为我在情节提要中设置的 tabcontroller。我没有初始化tabController,我只是从应用程序启动时使用的splitviewcontroller 中取出它(已损坏),然后将windows 根视图更改为这个新的拆分视图。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let splitVC = storyboard.instantiateViewController(withIdentifier: "wiqSplitVC") as! WIQSplitViewController
let navVc = UINavigationController.init(rootViewController: tabController!)
splitVC.viewControllers = [navVc]
tabController?.setViewControllers(tabs, animated: false)
tabController?.selectedIndex = 0
self.window?.rootViewController = splitVC
【讨论】:
以上是关于UISplitViewController 内的 iOS 13 UITabBarController 未正确折叠的主要内容,如果未能解决你的问题,请参考以下文章
UISplitViewController 中两个视图控制器之间的通信
UISplitViewController - 双列样式不起作用