首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UISplitViewController -用纵向中的侧栏切换图标替换回雪佛龙图标

UISplitViewController -用纵向中的侧栏切换图标替换回雪佛龙图标
EN

Stack Overflow用户
提问于 2021-12-07 18:15:46
回答 1查看 380关注 0票数 3

我正在开发一个iPadOS应用程序,在其中我使用了UISplitViewController。到目前为止,我一直在使用旧的API并手动处理所有东西(包括displayModeButtonItem)。现在,我想迁移到更新的“列样式”API (super.init(style: .doubleColumn)。我有几个UI问题,但我设法用一些解决办法解决了它们,但现在我在一个问题上受阻了,我找不到任何解决方案:

我想利用iOS14 14的UISplitViewController的所有内置机制,所以我将presentsWithGesture属性设置为true。由于这一点,我得到了侧边栏切换图标的景观方向(这正是我想要的),但在肖像我得到一个“回来-雪佛龙图标”与“回来”的标题。是否有一种方式来强制侧边栏切换图标显示这两个方向?

EN

回答 1

Stack Overflow用户

发布于 2021-12-08 19:03:08

我设置了一个示例项目,但我没有得到您的行为。我认为这是因为我们在设置UISplitViewController时所做的事情有所不同。

首先,感谢(@matt on SO)的两篇文章。(第一部分这里)这给我的代码带来了一些很大的变化。

基本上,我不再将我的UISplitViewController设置为我的场景中的根视图。相反,我根本不碰SceneDelegate,而是使用默认的ViewController

代码语言:javascript
运行
复制
let primaryVC = PrimaryVC()
let secondaryVC = SecondaryVC()
let compactVC = CompactVC()

override func viewDidLoad() {
    super.viewDidLoad()
    let split = UISplitViewController(style: .doubleColumn)
    self.addChild(split)
    self.view.addSubview(split.view)
    split.view.frame = self.view.bounds
    split.presentsWithGesture = true
    split.preferredSplitBehavior = .tile
    split.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    split.didMove(toParent: self)
    split.setViewController(primaryVC, for: .primary)
    split.setViewController(secondaryVC, for: .secondary)
    split.setViewController(compactVC, for: .compact)
}

当我这样做,我得到一个"sidebar.left“按钮和没有”后退“按钮与雪佛龙。我正在使用Xcode 13.1,并对iPadOS 14.0和15.1的目标进行了尝试。

如果您需要添加/替换一个bar按钮,我要做的是:

var barBtnSidebarLeft =UIBarButtonItem(图像: UIImage(systemName:"sidebar.left"),样式:.plain,目标: self,action:#selector(leftSidebarTapped)) navigationItem.leftBarButtonItem = barBtnSidebarLeft

但请注意,如果您这样做,您将得到两个侧边栏按钮!关于条形按钮,还有一个注意事项--尽管UISplitViewController在默认情况下为主和二级提供了导航条,但它并不适用于CompactCompact.com。(坦率地说,我不认为在紧凑尺寸的情况下有一个是好的做法。)

最后,阅读我提供的链接。它真正开始使用UISplitViewControllerDelegate来帮助您正确传递场景状态值。(我更喜欢称它为场景状态,而不是app状态,因为iPads可以有多个应用程序窗口。)

编辑

最后一个想法。IIRC你可以这样做:

  • presentsWithGesture设置为“`false”
  • 在两个视图控制器中放置您自己的酒吧按钮。
  • 手动(通过委托函数?)打开和关闭主视图控制器
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70265083

复制
相关文章

相似问题

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