Ipad 将UIViewController.view添加到其他视图会导致方向问题

Ipad 将UIViewController.view添加到其他视图会导致方向问题,ipad,uiview,uiviewcontroller,orientation,Ipad,Uiview,Uiviewcontroller,Orientation,短版: 我将alloc/init/在一个UIViewControllers viewDidLoad方法中保留一个新的UIViewController,并将新视图添加到self.View。这通常是可行的,但它似乎打乱了我的iPad应用程序的方向改变处理 较长版本: 我正在构建一个相当复杂的iPad应用程序,涉及很多视图和视图控制器。在调整设备方向遇到一些困难之后,我做了一个简单的XCode项目来找出问题所在 首先,我已经阅读了关于这个主题的苹果文档(一个叫做的小文档),虽然我确实认为它与上面列出的

短版:
我将alloc/init/在一个UIViewControllers viewDidLoad方法中保留一个新的UIViewController,并将新视图添加到self.View。这通常是可行的,但它似乎打乱了我的iPad应用程序的方向改变处理

较长版本
我正在构建一个相当复杂的iPad应用程序,涉及很多视图和视图控制器。在调整设备方向遇到一些困难之后,我做了一个简单的XCode项目来找出问题所在

首先,我已经阅读了关于这个主题的苹果文档(一个叫做的小文档),虽然我确实认为它与上面列出的原因之一有关,但我不确定如何解决它

在我的测试项目中,我有一个appDelegate、一个rootViewController和一个带有两个自定义ViewController的UISplitViewController。我使用rootViewController上的按钮切换到splitViewController,然后可以使用按钮切换回rootViewController。到目前为止,一切都很好,即所有视图都可以根据设备方向进行调整

但是,在splitViewController的右侧viewController中,我使用viewDidLoad方法初始化其他一些viewController,并将它们的视图添加到自己的视图中:

self.newViewController=[[UIViewController新建]自动释放]; [newViewController.view setBackgroundColor:[UIColor yellowColor]]; [self.view addSubview:newViewController.view]

这就是问题所在。不知何故,在添加此视图后,调整设备方向是混乱的。启动时一切正常,切换到splitViewController后一切正常,但一旦切换回rootViewController,一切都结束了。我已经尝试了(几乎)所有关于保留和释放viewcontroller的方法,但似乎没有任何方法可以修复它

从上面的代码中可以看到,我已经将newViewController声明为属性,但是如果我没有声明,也会发生同样的情况

我不应该在自己的视图中添加ViewController的视图吗?这会把我的项目搞得一团糟,因为我有很多视图控制器在做各种事情


如果您对此有任何帮助,我们将不胜感激。

我也遇到了同样的问题,通过从父视图中删除IB中的“自动调整子视图大小”选项来解决。

选择视图a,然后:Inspector->Attributes(first tab)->drawing。

我认为新的viewcontroller正在接收自动旋转调用,可能没有处理它们。同时,旧的ViewController及其视图将无法获得自动旋转调用,并且将被卡在它们所处的任何方向上


我说不出来,但我认为您要做的是创建一个UIView并将其添加到旧的viewcontroller中,而不是创建一个UIVIewController并添加其视图。

我也有同样的问题,实际上我的应用程序只能在横向模式下工作,并且有3个视图,所有视图都在IB中配置为横向。第一个,“自动加载”将以正确方向加载,但如果我尝试添加子视图,则新视图将处于纵向模式。仍在挖掘。可能与以下相关: