我遇到的问题是我正在处理的应用程序是这样的:
应用程序窗口的rootViewController
设置为MenuViewController
的自定义类(UIViewController
)。此视图控制器具有自己的rootViewController
属性。每当设置发生这种情况时(代码的真正简短版本):
- (void)setRootViewController:(UIViewControlelr *)rootViewController
{
...
_rootViewController = rootViewController;
if (self.rootViewController) {
[self addChildViewController:rootViewController];
[self.view addSubview:rootViewController.view];
}
...
}
现在这个MenuViewController
可以在它的rootViewController上显示一个模态视图控制器。
我这样做:
[self.rootViewController presentModalViewController:viewController animated:YES completition:nil];
直到这里,一切看起来都还可以。现在在iPad上,每当我从我的模态视图控制器调用[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]
时,它下面的界面都会旋转到相同的方向(即UIInterfaceOrientationLandscapeLeft
),无论呈现视图控制器时的初始方向是什么。
总而言之,我的观点的层次结构是这样的:
Window
|
- Menu View Controller
|
- Root View Controller
|
- Modal view controller
有谁知道如何解决这个问题?它并不会发生在iPhone上。
答案 0 :(得分:1)
听起来好像在iPad上你的MenuViewController
rootViewController
支持多种界面方向,而在iPhone上却没有。这是猜测,因为你还没有说过这个。
如果是这种情况,并且rootViewController确实支持多个界面方向,则修复将覆盖- supportedInterfaceOrientations
并返回肖像,这似乎是您建议您想要的。