【发布时间】:2013-09-20 17:01:17
【问题描述】:
我有 3 个视图的层次结构
我为我的 NavigationViewController 创建了一个子类,并设置了一个属性Landscape,它确定每个 viewController 是否可以支持不同的方向。
此属性设置在每个视图控制器的ViewWillAppear 中:这非常有效。控制器 1 和 2 仅支持纵向,控制器 3 支持纵向和横向。
当我要返回 popping 控制器 3 以返回控制器 2 时出现问题
如果我在横向的控制器 3 中,然后单击后退按钮,我的控制器 2 以横向呈现给我:(控制器 2 不支持横向)
然后我必须旋转设备以使方向自行修复。 . . .
导航控制器中的代码 - (BOOL) 应该自动旋转 { 返回是; }
- (NSUInteger)supportedInterfaceOrientations
{
if (LandscapeOK) {
// for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
return UIInterfaceOrientationMaskAll;
} else {
return UIInterfaceOrientationMaskPortrait;
}
每个ViewControllers的代码ViewWillAppear方法
[(NavigationViewController *)[self navigationController] setLandscape:YES];
我的代码设置几乎与这个问题完全相同:同样的问题。大约一年前发布了问题,但还没有合适的解决方案 - 在查看列出的答案时
iOS 6: How do I restrict some views to portrait and allow others to rotate?
【问题讨论】:
-
从 'Hierarchy' 中,你的意思是,你有一个父级 'NavigationViewController',上面有 'Landscape' 属性,而所有其他控制器(1、2 和 3)都派生自它?
-
是的 - 每个 VC 中都有一个按钮通向下一个 1 -> 2 -> 3
标签: ios uiview uiviewcontroller uinavigationcontroller orientation