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 中两个视图控制器之间的通信

UISplitViewController - 双列样式不起作用

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加

在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]