如何在 splitViewController 中关闭主视图控制器

How to close master view controller in splitViewController

我有一个应用程序实现了拆分视图控制器。我还有一个覆盖特征集合的设置,因此所有设备都设置为常规大小 类(而不是 iPhone 的紧凑型)。

我在应用程序中也有一个允许用户切换 "split view" 的设置。这只是将 targetDisplayModeForActionInSplitViewController 的 return 值从 UISplitViewControllerDisplayModeAllVisible 切换到 UISplitViewControllerDisplayModeOverlay

我的大部分视图控制器都是通过情节提要中的转场加载的,但是有些是通过编程方式加载的(例如 [self presentViewController...])。

我遇到的问题是,当显示模式设置为覆盖时,以编程方式加载任何视图时,主视图控制器不会折叠。我试过用类似问题的代码来消除它,但没有成功。有人知道怎么做吗?

为遇到同样问题的其他人解决了这个问题。手动将首选显示模式设置为隐藏将自动隐藏视图控制器。在我的拆分视图控制器 class 中,我只是添加了

-(void)setDisplayModeHidden {
    self.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}

并在NSNotificationCenter中注册为观察者。每当我需要关闭视图控制器时,我只需调用该函数,它就会隐藏它!