2010-06-11 37 views
0

短版:
我分配/初始化/保留在一个UIViewControllers viewDidLoad方法一个新的UIViewController,添加新的视图以self.view。这通常有效,但它似乎弄乱了我的iPad应用程序的方向更改处理。添加UIViewController.view另一种观点引起取向问题

较长版本:
我建立一个相当复杂的iPad应用,涉及到很多的意见和viewcontrollers。在调整设备方向后遇到一些困难后,我做了一个简单的XCode项目来找出问题所在。首先,我已阅读关于此主题的Apple Docs(一个名为 "Why won't my UIViewController rotate with the device?"的小文档),虽然我确实认为它与列出的原因之一有关,但我并不确定如何解决它。

在我的测试项目中,我有一个appDelegate,一个rootViewController和一个带有两个自定义viewController的UISplitViewController。我使用rootViewController上的按钮切换到splitViewController,并从那里我可以使用一个按钮切换回rootViewController。到目前为止,一切都很好,即所有的视图都可以适应设备的方向。

然而,在splitViewController的右侧的viewController,我使用viewDidLoad方法初始化一些其他viewControllers,他们的观点添加到其自己的看法:

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

这是事情出错的地方。不知何故,在添加这个视图后,调整到设备方向是很麻烦的。在启动时一切都很好,在切换到splitViewController后,一切仍然正常,但只要切换回rootViewController就完成了。我试过(几乎)所有关于保留和释放viewcontroller的东西,但似乎没有解决它。

从上面的代码可以看出,我已经将newViewController声明为属性,但是如果我不这样做,也会发生同样的情况。

我不应该添加一个ViewController的视图到我自己的视图吗?这真的会搞乱我的项目,因为我有很多viewControllers做各种事情。

任何帮助,将不胜感激......

+0

我有同样的问题,实际上我的应用程序只能在横向模式下工作,并有3个视图,全部配置为IB中的横向。 第一个,自动加载正确的方向加载,但如果我尝试添加一个子视图,新视图是在肖像模式。仍在挖掘。 – Cesar 2010-06-17 05:23:15

+0

可能与以下相关:http://stackoverflow.com/questions/2656088/uiview-added-with-incorrect-orientation/3059099#3059099 – Cesar 2010-06-17 05:31:00

回答

1

我有同样的问题,通过接缝从父去除查看IB的“自动调整大小子视图”选项解决。
然后选择视图:检查器 - >属性(第一个选项卡) - >绘图。

0

我认为正在发生的事情是您的新viewcontroller获取自动转移调用,并可能不处理它们。同时你的旧viewcontrollers和它的意见将不会得到自动调用的电话,并将卡在任何方向,他们在。

我不能告诉,但我想你想要做的是做一个UIView和添加它到你的旧视图控制器,而不是制作一个UIVIewController并添加它的视图。