После одобрительного ответа miamk я на шаг ближе к достижению того, чего хочу ... Но теперь возникает следующая проблема:
У меня есть приложение для iPad, которое можно использовать во всех четырех режимах просмотра (портрет вверх / вниз и пейзаж влево / вправо).Но в определенный момент у меня есть вид, который я хочу видеть только в режиме ландшафт .Поэтому я делаю следующее в 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, который показывает пользователю сообщение о том, что он / она должен повернуть устройство для правильного просмотра экрана.
Так что работает!
Тогда проблемавозникает в этом 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 (что на самом деле означает, что вы держите устройство) ..
Я надеюсь, что этоимеет смысл, и кто-то может показать мне, что вызывает это.