У меня есть приложение для iPad, которое можно использовать во всех четырех режимах просмотра (портрет вверх / вниз и пейзаж влево / вправо). Но в определенный момент у меня есть вид, который я хочу видеть только в режиме landscape . Поэтому я делаю следующее в UIViewController, который запускает действие для просмотра только в альбомной ориентации:
- (void) showProperty:(Property *) property {
if ([self interfaceOrientation] == UIInterfaceOrientationLandscapeLeft || [self interfaceOrientation] == UIInterfaceOrientationLandscapeRight) {
PropertyViewController *propertyView = [[PropertyViewController alloc] initWithNibName:@"PropertyViewController" bundle:[NSBundle mainBundle]];
propertyView.property = property;
[self.navigationController pushViewController:propertyView animated:YES];
[propertyView release];
propertyView = nil;
}
else {
RotateDeviceViewController *rotateView = [[RotateDeviceViewController alloc] initWithNibName:@"TabRotate" bundle: [NSBundle mainBundle]];
rotateView.property = property;
[self.navigationController pushViewController:rotateView animated:YES];
[rotateView release];
rotateView = nil;
}
}
Это работает нормально и, таким образом, показывает либо нужный экран (PropertyViewController), когда iPad удерживается в ландшафтном режиме, а если нет, то показывает RotateDeviceViewController, который показывает пользователю сообщение о том, что он / она должен повернуть устройство, чтобы правильно просмотреть экран.
Поэтому, когда пользователь поворачивает свое устройство в альбомный режим, я хочу показать ему правильное представление (PropertyViewController). И все это вроде работает!
Проблема возникает, хотя в этом RotateDeviceViewController .. Там у меня есть следующее:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
[self showProperty];
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
- (void) showProperty {
PropertyViewController *propertyView = [[PropertyViewController alloc] initWithNibName:@"PropertyViewController" bundle:[NSBundle mainBundle]];
propertyView.property = property;
[self.navigationController pushViewController:propertyView animated:YES];
[propertyView release];
}
Поэтому, как только я поворачиваю устройство (при просмотре RotateDeviceViewController ) в альбомный режим, я показываю пользователю PropertyViewController . Это работает ... Но когда появляется PropertyViewController , он показывает мой макет повернутый на 90 градусов. Таким образом, в основном он отображает содержимое в режиме портрет вместо использования режима landscape (что фактически означает, что вы держите устройство) ..
Я надеюсь, что это имеет смысл, и кто-то может показать мне, что вызывает это.
Скриншоты, чтобы было понятнее: