我已经用style .tripleColumn设置了一个UISplitViewController。
let splitViewController = UISplitViewController(style: .tripleColumn)
preferredDisplayMode = .twoBesideSecondary
preferredSplitBehavior = .tile对于第一个菜单项“我的故事”,它需要三列。但是,对于所有其他菜单项,它应该只是主列(侧栏)和可见内容。.supplementary列应该是隐藏的。

例如,当点击"My Stats“时,下面的代码隐藏了.primary (侧边栏)和.supplementary列,只显示"My stats”。
splitViewController?.showDetailViewController(stats, sender: nil)
splitViewController?.hide(.supplementary)如何切换到.twoColumn样式,并且只显示.primary和.secondary列?
发布于 2020-11-23 09:10:07
根据设计,在.tripleColumn拆分视图控制器中,如果不同时显示.supplementary列,则不可能出现.primary列。
而且您不能将同一个拆分视图控制器从.tripleColumn更改为.doubleColumn。我想你可以直接把整个拆分视图控制器从界面上取出来,然后换一个不同的,但这真的是你想要做的吗?我认为使用拆分视图控制器的方式会更好。
发布于 2020-11-26 21:51:05
我也有类似的问题,但我的解决方案相当“老土”。当我想隐藏它时,我只需将首选补充列宽度更改为1。任何小于1的值都会导致应用程序冻结。
func toggleSupplementary(_ isOn: Bool) {
viewController(for: .supplementary)?.view.alpha = isOn ? 1 : 0
preferredSupplementaryColumnWidth = isOn ? UISplitViewController.automaticDimension : 1
}您还可以尝试将补充视图控制器设置为nil。这样你就能实现你想要的东西。
splitViewController.setViewController(nil, for: .supplementary)
然而,当拆分视图控制器折叠到紧凑的宽度,然后再次展开时,这会导致崩溃。更改列宽的解决方案在这种情况下也适用。
发布于 2021-01-20 11:46:25
解决方案如此简单,以至于我讨厌浪费一天的时间来寻找它(甚至重新考虑我的整个应用程序设计)。
要隐藏补充列,请将其视图设置为nil。就这么简单。
splitViewController?.setViewController(nil, for: .supplementary)当你再次需要它的时候:将它设置为合理的视图!
注意:当补充值为nil时,显示侧边栏按钮将断开。我决定取消隐藏侧边栏的可能性,就像在音乐应用中一样。要做到这一点,删除"Present Master with Gesture“。
https://stackoverflow.com/questions/64958529
复制相似问题