【问题标题】:How do I prevent my UISplitViewController from displaying the master VC when rotating to portrait?如何防止我的 UISplitViewController 在旋转到纵向时显示主 VC?
【发布时间】:2015-02-28 21:23:36
【问题描述】:

我有一个UISplitViewController,用于编辑一些文本。

流程基本是这样的:

  1. 用户创建了一个新笔记。
  2. 用户被转换到详细视图控制器以创建或编辑所述注释。
  3. 用户可以纵向或横向编辑文本。

问题是,当用户在详细视图控制器中以横向编辑内容时,他突然将设备旋转到纵向,显示的 VC 将是主 VC 而不是 Detail VC(如图 3 所示)。我想留在细节VC。

我正在查看 Apple 的 Notes.app,当您在编辑笔记时将设备旋转到纵向时,您将停留在细节 VC 而不是回到 Master。所以这肯定是可能的。

我需要为此修改特定属性吗?可悲的是,我正在查看 the docs,但找不到任何相关内容。

【问题讨论】:

  • 我现在实际上正在开发一个主从应用程序,您描述您希望项目如何工作的方式就是它默认的工作方式。您是否对默认项目进行了更改?开始一个新的主从项目...不要更改任何内容,看看它是否按您期望的方式工作。
  • 我实际上相信我已经找到了在 splitViewController:secondaryViewController:ontoPrimaryViewController 委托方法上修复它的方法。我从来没有接触过这种方法,所以我不完全确定它是否是默认的。无论如何,如果需要,我会编辑它:)
  • 您可以查看的另一件事是UISplitViewController 的属性preferredDisplayMode

标签: ios uikit autolayout uisplitviewcontroller size-classes


【解决方案1】:

在 SO 上询问问题 5 分钟后解决问题是我的典型做法。

原来splitViewController:collapseSecondaryViewController:ontoPrimaryViewController UISplitViewController 委托方法负责选择视图的“折叠”。最初让我失望的是,我不认为回到肖像是一种“崩溃”。

所以我用这个编辑了委托方法:

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController!, ontoPrimaryViewController primaryViewController:UIViewController!) -> Bool {
    if let secondaryAsNavController = secondaryViewController as? UINavigationController {
        if let topAsDetailController = secondaryAsNavController.topViewController as? TextEditorViewController {
            if topAsDetailController.inEditMode {
                return false
            }
        }
    }
    return true
}

现在旋转到纵向时,文本编辑器视图“不会折叠到主视图上”。

【讨论】:

  • 很高兴知道 :) 感谢更新。
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
相关资源
最近更新 更多