【发布时间】:2011-06-08 18:11:22
【问题描述】:
这个网站上已经问了十几次了,但我还没有找到适合我的答案。我有一个 iPad 应用程序,它在以编程方式创建的根级别上有一个 UISplitViewController。在右侧窗格中显示的视图中,由用户交互触发,UINavigationController 以编程方式创建并呈现给用户。这是代码:
listenerController = [[UINavigationController alloc] initWithRootViewController:listenerView];
[listenerController.navigationBar setTintColor:[UIColor colorWithRed:185.0f/255.0f green:80.0f/255.0f blue:0.0f/255.0f alpha:1.0f]];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[listenerController setModalPresentationStyle:UIModalPresentationFormSheet];
[listenerController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[listenerController setModalInPopover:YES];
}
[self presentModalViewController:listenerController animated:YES];
[listenerController release];
这确实正确地创建了视图控制器,但是当它显示时,无论我的 iPad 处于什么方向,iPad 都会被强制返回纵向视图。然后当我关闭模式窗口时,它会旋转回来。
我已经将右侧窗格的视图控制器中的 shouldAutorotateToInterfaceOrientation 设置为 YES,我什至尝试将其添加到主应用程序委托类中,但没有任何运气。看起来我不应该为了重写 shouldAutorotateToInterfaceOrientation 方法而将 UINavigationController 子类化。
我是否从错误的对象调用 presentModalViewController?我已经尝试过 [self presentModalViewController ...] 以及 [self.parentViewController presentModalViewController ...],结果相同。
【问题讨论】:
标签: iphone objective-c xcode ios ipad