如何防止我的 UISplitViewController 在旋转到纵向时显示主 VC?
Posted
技术标签:
【中文标题】如何防止我的 UISplitViewController 在旋转到纵向时显示主 VC?【英文标题】:How do I prevent my UISplitViewController from displaying the master VC when rotating to portrait? 【发布时间】:2015-02-28 21:23:36 【问题描述】:我有一个UISplitViewController
,用于编辑一些文本。
流程基本是这样的:
-
用户创建了一个新笔记。
用户被转换到详细视图控制器以创建或编辑所述注释。
用户可以纵向或横向编辑文本。
问题是,当用户在详细视图控制器中以横向编辑内容时,他突然将设备旋转到纵向,显示的 VC 将是主 VC 而不是 Detail VC(如图 3 所示)。我想留在细节VC。
我正在查看 Apple 的 Notes.app,当您在编辑笔记时将设备旋转到纵向时,您将停留在细节 VC 而不是回到 Master。所以这肯定是可能的。
我需要为此修改特定属性吗?可悲的是,我正在查看 the docs,但找不到任何相关内容。
【问题讨论】:
我现在实际上正在开发一个主从应用程序,您描述您希望项目如何工作的方式就是它默认的工作方式。您是否对默认项目进行了更改?开始一个新的主从项目...不要更改任何内容,看看它是否按您期望的方式工作。 我实际上相信我已经找到了在splitViewController:secondaryViewController:ontoPrimaryViewController
委托方法上修复它的方法。我从来没有接触过这种方法,所以我不完全确定它是否是默认的。无论如何,如果需要,我会编辑它:)
您可以查看的另一件事是UISplitViewController
的属性preferredDisplayMode
【参考方案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
现在旋转到纵向时,文本编辑器视图“不会折叠到主视图上”。
【讨论】:
很高兴知道 :) 感谢更新。以上是关于如何防止我的 UISplitViewController 在旋转到纵向时显示主 VC?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Visual Studio 更改我的 csproj 格式