Как узнать, отображается ли ModalViewController?

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

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

Благодарю вас!


person ed94133    schedule 21.08.2010    source источник


Ответы (2)


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

person Elfred    schedule 21.08.2010
comment
Спасибо, это сработало. Я использовал условное выражение: if([self.modalViewController isMemberOfClass:[класс UINavigationController]])... - person ed94133; 22.08.2010

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

UIViewController *leafController = self;
while(true) {
    if (leafController.modalViewController) {
        leafController = leafController.modalViewController;
        continue;
    }
    break;
}
[leafController presentModalViewController:showController animated:YES];
person idearibosome    schedule 25.12.2011