Cocoa touch 如何为基于UISplitViewCOntroller的iPad应用程序设置初始方向

Cocoa touch 如何为基于UISplitViewCOntroller的iPad应用程序设置初始方向,cocoa-touch,ipad,ios-simulator,Cocoa Touch,Ipad,Ios Simulator,我有一个在iPad上运行良好的分割视图应用程序。它使用默认设置(纵向中的Popover,横向中左侧的table view)。应用程序运行后,视图将正确移动。我所看到的问题是,当应用程序启动(在模拟器中)在横向模式下运行时,UI范例是用于纵向模式(主列表是一个弹出窗口)的范例 我想这是一些奇怪的模拟器,或者我错过了一个选项,我的主视图控制器 也将此作为一个答案,希望它对那些需要相同修复的人来说更加明显 我解决了这个问题。我在等待加载和解析外部XML流。因此,在我的applicationdFinis

我有一个在iPad上运行良好的分割视图应用程序。它使用默认设置(纵向中的Popover,横向中左侧的table view)。应用程序运行后,视图将正确移动。我所看到的问题是,当应用程序启动(在模拟器中)在横向模式下运行时,UI范例是用于纵向模式(主列表是一个弹出窗口)的范例


我想这是一些奇怪的模拟器,或者我错过了一个选项,我的主视图控制器

也将此作为一个答案,希望它对那些需要相同修复的人来说更加明显

我解决了这个问题。我在等待加载和解析外部XML流。因此,在我的
applicationdFinishLaunching
方法之后,我正在加载带有splitViewController视图的窗口

添加:

[window addSubview: splitViewController.view]; 
[window makeKeyAndVisible]; 

回到那个方法修复了方向识别问题,我遇到了和这里描述的相同的问题。令人尴尬的是,解决方案非常简单,只需在将视图添加到窗口之前手动设置视图的框架

只需检查界面方向,如果是横向的,则切换应用程序框架宽度和高度维度(即,宽度变为高度,高度变为宽度)


通过执行以下操作,我成功地显示了加载视图

[window addSubview:self._splitViewController.view];
[window addSubview:self._myLoadingView];
self._splitViewController.view.hidden = YES;
[window makeKeyAndVisible];
[self loadAllDatas];
self._splitViewController.view.hidden = NO;

我工作正常

它不能正常工作,因为UISplitViewController的默认细节视图控制器只是一个普通的UIViewController。UIViewController的shouldRotate方法仅在纵向模式下返回YES


添加一个通用UIViewController,在shouldRotate中为所有方向返回YES,解决了我的问题。

我不认为这会让开发人员感到尴尬;这是SDK中的一个缺陷。不可能需要此步骤。如果应用程序中未使用拆分视图控制器,则不必执行此步骤。如果加载的视图不是拆分视图控制器的一部分,则此步骤是否适用?问题的一部分是,我希望有一个“加载”视图出现。当我这样做的时候,它抛开了一切,包括方向支持,按照上面概述的方式做事情。
[window addSubview:self._splitViewController.view];
[window addSubview:self._myLoadingView];
self._splitViewController.view.hidden = YES;
[window makeKeyAndVisible];
[self loadAllDatas];
self._splitViewController.view.hidden = NO;