【发布时间】:2012-10-18 21:16:34
【问题描述】:
我将 UINavigationController 子类化如下:
-(NSUInteger)supportedInterfaceOrientations {
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate {
return self.topViewController.shouldAutorotate;
}
但是,我在以不同于其父级的初始方向推动视图控制器时遇到了困难。就我而言,父视图仅是纵向的:
-(BOOL)shouldAutorotate {
return NO;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
但我希望推送的视图仅是横向的 - 只有在手动更改设备的方向后才会如此。
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
我非常感谢任何人指出我正确的方向。 (到目前为止,我只有一个 hacky 解决方案......)
编辑:
以下显示了我如何启动子类 UINavigationController
PortraitView *vc = [[PortraitView alloc] init];
SubClassedNav *navController = [[SubClassedNav alloc] initWithRootViewController:vc];
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:navController animated:YES completion:nil];
以及我随后如何推动新观点:
LandscapeView *vc = [[LandscapeView alloc] init];
[[self navigationController] pushViewController:vc animated:YES];
【问题讨论】:
-
我在我的一个应用程序中进行了完全相同的设置,并且按照您的建议运行。你确定它是你描述的设置吗?我唯一的想法是您在 Info.plist 中设置了哪些支持方向?
-
感谢您的意见。 info.plist 支持所有方向,所以不幸的是我的错误似乎并不存在。如果您运行良好,我怀疑我在某个地方犯了一个基本错误..
-
您是否仔细检查过您实际上在使用您的子类导航控制器?
-
已编辑以显示我是如何做到的。如果您发现明显的错误,我将不胜感激!
-
InsertWittyName,因为我还没有在这方面取得进展,您是否可以为我指出一个正确实现此功能的项目,或者在此处发布您的实现?
标签: xcode uinavigationcontroller ios6 orientation