2010-08-21 7 views
5

I override -orientationChanged в моем основном ViewController, чтобы нажать ModalViewController A, когда устройство находится в ландшафтном режиме. При перемещении назад в портретном режиме ModalViewController A отклоняется. Однако есть и другие случаи (после нажатия кнопок), где показаны ModalViewControllers B, C или D. Когда они показываются, если устройство повернуто горизонтально и повернуто назад, ModalViewController B C или D отклоняется неправильно.Как узнать, отображается ли ModalViewController?

Я могу проверить, что -ориентация, измененная на моем основном ViewController, передается по сообщениям, даже когда отображается ModalViewController. Есть ли условие, которое я могу добавить в свой метод -orientationChanged, чтобы обойти этот код, когда отображается ModalViewController B C или D?

Спасибо!

ответ

6

Вы можете проверить, является ли свойство modalViewController в вашем главном контроллере просмотра одним из ваших контроллеров представлений.

+2

Спасибо, это сработало. Я использовал условное: if ([self.modalViewController isMemberOfClass: [UINavigationController class]]) ... – ed94133

1

Вы можете использовать этот код, чтобы найти последний ModalViewController.

UIViewController *leafController = self; 
while(true) { 
    if (leafController.modalViewController) { 
     leafController = leafController.modalViewController; 
     continue; 
    } 
    break; 
} 
[leafController presentModalViewController:showController animated:YES]; 
Смежные вопросы