UISplitViewController始终在iPad纵向模式iOS 9下显示主视图

UISplitViewController始终在iPad纵向模式iOS 9下显示主视图,ios,objective-c,ipad,ios9,uisplitviewcontroller,Ios,Objective C,Ipad,Ios9,Uisplitviewcontroller,我正在使用UISplitViewController构建一个通用应用程序,目标是iOS9及以上版本。应用程序语言是Objective-C 从Xcode主/细节模板开始,以标准方式设置我的视图,我意识到,如果我一直(在iPad上)在屏幕上显示主视图,包括设备处于纵向模式时,应用程序会更好。然而,无论我多么努力地寻找,我都找不到任何东西来帮助我了解这是如何实现的。我知道这是以前使用splitViewController:shouldHideViewController:inOrientation实现

我正在使用UISplitViewController构建一个通用应用程序,目标是iOS9及以上版本。应用程序语言是Objective-C

从Xcode主/细节模板开始,以标准方式设置我的视图,我意识到,如果我一直(在iPad上)在屏幕上显示主视图,包括设备处于纵向模式时,应用程序会更好。然而,无论我多么努力地寻找,我都找不到任何东西来帮助我了解这是如何实现的。我知道这是以前使用splitViewController:shouldHideViewController:inOrientation实现的:

然而,这种方法在iOS 9中被弃用,我不知道是什么替代了它,为什么。我查看了UISplitViewController的新委托方法,发现它们完全缺乏任何级别的直观性

我真的很想得到一些关于什么取代splitViewController:shouldHideViewController:inOrientation:以及如何使用它在iPad上始终显示主视图的建议。

UISplitViewController子类 无需特别跟踪方向变化:主视图和详细视图仍将以纵向模式在iPhone上按顺序显示,大多数iPhone以横向模式显示。
首选显示模式:.allVisible
仅影响两个视图同时可见的模式

Swift

类SplitViewController:UISplitViewController{
重写func viewDidLoad(){
super.viewDidLoad()
preferredDisplayMode=.allVisible
}
}
Obj-C

-(void)viewDidLoad{
[超级视图下载];
self.preferredDisplayMode=UISplitViewControllerDisplayModeAllVisible;
}
iPad人像iphone8plus景观


太好了,谢谢。我会试试看。但是仅仅为了改变这个值,真的有必要创建子类吗?知道为什么不能在香草分割视图上更改值吗?现在有机会尝试一下。像做梦一样工作。我不敢相信我花了这么多时间研究分割视图委托,却没有正确查看分割视图本身的文档。文档中没有说子类化是必要的,但它似乎是最有效的方法,因为它确保在显示分割视图之前对其进行配置。再次感谢!无需子类化:如果有指向
UISplitViewController
的指针,则可以
aSplitViewController.preferredDisplayMode=.AllVisible
。如果文档详尽无遗,就不会出现堆栈溢出,我也不会有徽章……请注意,
.AllVisible
已重命名为
.AllVisible