我有三个ViewControllers设立处理三个视图。 我遇到的问题是,在模拟器的方向是LandscapeRight(这是我想要的),和第一种观点在横向视图显示正确,但是当我移动到第二个和第三个观点,他们出现逆时针旋转90度,在手机的屏幕左下角的视图的左上角。 我一直在试图调试这几天和我已经得到了一个线索最近正在跟踪它的方式如下:
以下是我的应用程序委托的applicationDidFinishLaunching:
NSLog(@"1");
[window addSubview:welcomeController.view];
NSLog(@"2");
[window addSubview:goalController.view];
NSLog(@"3");
[window addSubview:planningController.view];
NSLog(@"4");
[window bringSubviewToFront:welcomeController.view];
NSLog(@"5");
我的每ViewControllers实现类似于下面的东西(传递给NSLog的字符串中是控制器的名字唯一的变化切换出):
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
NSLog(@"called for WelcomeController");
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
就这样,我得到的控制台输出如下:
a
called for WelcomeController
called for WelcomeController
called for WelcomeController
called for WelcomeController
2
called for GoalController
3
called for PlanningController
4
5
我觉得有趣的是shouldAutorotateToInterfaceOrientation被称为4次,多数民众赞成加入的第一个视图,而其他两个只得到调用一次。 我预计,这可能是因为它有起初做一些设置(我相信模拟器在纵向模式下开始了,所以它可能会调用它,而做旋转),但我发现的相关性有点怀疑。
我切换顺序周围,使得addSubview被称为该goalController第一和第二welcomeController。 在这种情况下,这是它显示了正确的横向(这是正常的欢迎控制器)的goalController。 这似乎消除我的XIB文件和ViewControllers自己。 我不知道为什么在那里addSubview被称为第一种观点是特别的。 我在相同的结果指标0使用insertSubview也试过。