首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UISplitViewController中仅隐藏.supplementary列

在UISplitViewController中仅隐藏.supplementary列
EN

Stack Overflow用户
提问于 2020-11-23 03:24:33
回答 3查看 776关注 0票数 5

我已经用style .tripleColumn设置了一个UISplitViewController

代码语言:javascript
复制
let splitViewController = UISplitViewController(style: .tripleColumn)
preferredDisplayMode = .twoBesideSecondary
preferredSplitBehavior = .tile

对于第一个菜单项“我的故事”,它需要三列。但是,对于所有其他菜单项,它应该只是主列(侧栏)和可见内容。.supplementary列应该是隐藏的。

例如,当点击"My Stats“时,下面的代码隐藏了.primary (侧边栏)和.supplementary列,只显示"My stats”。

代码语言:javascript
复制
splitViewController?.showDetailViewController(stats, sender: nil)
splitViewController?.hide(.supplementary)

如何切换到.twoColumn样式,并且只显示.primary.secondary列?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-23 09:10:07

根据设计,在.tripleColumn拆分视图控制器中,如果不同时显示.supplementary列,则不可能出现.primary列。

而且您不能将同一个拆分视图控制器从.tripleColumn更改为.doubleColumn。我想你可以直接把整个拆分视图控制器从界面上取出来,然后换一个不同的,但这真的是你想要做的吗?我认为使用拆分视图控制器的方式会更好。

票数 2
EN

Stack Overflow用户

发布于 2020-11-26 21:51:05

我也有类似的问题,但我的解决方案相当“老土”。当我想隐藏它时,我只需将首选补充列宽度更改为1。任何小于1的值都会导致应用程序冻结。

代码语言:javascript
复制
func toggleSupplementary(_ isOn: Bool) {
    viewController(for: .supplementary)?.view.alpha = isOn ? 1 : 0
    preferredSupplementaryColumnWidth = isOn ? UISplitViewController.automaticDimension : 1
}

您还可以尝试将补充视图控制器设置为nil。这样你就能实现你想要的东西。

splitViewController.setViewController(nil, for: .supplementary)

然而,当拆分视图控制器折叠到紧凑的宽度,然后再次展开时,这会导致崩溃。更改列宽的解决方案在这种情况下也适用。

票数 1
EN

Stack Overflow用户

发布于 2021-01-20 11:46:25

解决方案如此简单,以至于我讨厌浪费一天的时间来寻找它(甚至重新考虑我的整个应用程序设计)。

要隐藏补充列,请将其视图设置为nil。就这么简单。

代码语言:javascript
复制
splitViewController?.setViewController(nil, for: .supplementary)

当你再次需要它的时候:将它设置为合理的视图!

注意:当补充值为nil时,显示侧边栏按钮将断开。我决定取消隐藏侧边栏的可能性,就像在音乐应用中一样。要做到这一点,删除"Present Master with Gesture“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64958529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档