这不是一个重复的问题。尚未提供最终工作解决方案。在我接受答案或找到并提供我自己的解决方案之前,请不要关闭此问题。谢谢!
=============================================== =================== 使用Xcode 4.5.1,我有一个标签栏应用程序,里面有5个标签。每个选项卡都包含一个UINavigationController。因此,整个应用程序需要在纵向模式下查看,除了一个唯一的ViewController - 一个“模态”VC,它以全屏模式打开,并且打算在横向模式下查看。
这在iOS5中运行得非常好 - 我只是在一个特定的ViewController中使用了以下代码:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
但是现在App崩溃了,并且出现了这个错误:
Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation',
reason: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'
有什么建议吗?
答案 0 :(得分:5)
请检查您使用的xcode版本。
您使用的是XCODE 4.5:shouldAutorotateToInterfaceOrientation
委托折旧。
您在项目中使用以下行。
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
-(BOOL)shouldAutorotate
{
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
答案 1 :(得分:1)
您需要使用它来避免iOS6崩溃..
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
return UIInterfaceOrientationMaskAllButUpsideDown; //Getting error here? then update ur xcode to 4.5+
}
#endif
答案 2 :(得分:0)
记住一件事。在iOS 6中
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
已弃用。
你不能在iOS 6中使用它。为了支持UINavigationController的viewControllers中的不同接口方向,你需要为UINavigationController创建子类或者创建它的类别。
答案 3 :(得分:0)
代码看起来不错。它应该不会因为这些方法而崩溃。
问题可能在代码的另一部分。
但是,我想在此告诉你。
以上shouldAutorotateToInterfaceOrientation
方法方向方法已在iOS 6中弃用。
如果您想了解更多如何解决方向问题
you should take a look of this