我的情况非常糟糕,我必须提交我的应用程序,但我发现了一个问题:
我的应用程序是基于导航的应用程序,在这个应用程序中,我只希望一个控制器能够横向:
--> 根控制器 --> WelcomeController --> LandscapeController
在横向控制器中,我在主视图中设置了两个视图,一个是纵向模式,告诉用户他必须转动设备,另一个设置为横向(在处于纵向模式的主视图中)
我已经对我的导航控制器进行了子类化:我MyNavController
在其中设置了:
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
因此,层次结构顶部的控制器决定是否navController
可以旋转。
在我的应用程序委托中,我设置了:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return (UIInterfaceOrientationMaskAll);
}
所以我可以在我的应用程序上有两个方向。
在欢迎控制器中,我设置了:
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait);
//return (UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return YES;
}
这意味着欢迎控制器只能处于纵向模式。
在我设置的景观控制器中:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft;
}
- (BOOL)shouldAutorotate
{
return YES;
}
以便景观控制器可以旋转。
我使用以下方式调用景观控制器:
LandscapeController *aLandscapeController = [LandscapeController] allo] init....
[self.navigationController pushViewController:aLandscapeController animated:YES];
它可以工作,但有时信不信由你,当我推动横向控制器并转动设备时,欢迎控制器变成横向并且只占据屏幕的一半,因为它不能处于横向状态,这太糟糕了对我来说你无法想象。
我能做些什么来避免这种情况?
我会接受任何帮助,如果需要,我会捐款。
非常感谢。