如何防止我的 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Hibernate 删除我的表

如何防止 Visual Studio 更改我的 csproj 格式

如何防止未经授权访问我的 Firebase 实时数据库?

如何防止未经授权访问我的 Firebase 实时数据库?

如何防止我的 Vue 构建由于 Typescript 错误而失败

如何防止我的网站被sql注入?支柱