5

メインの ViewController で -orientationChanged をオーバーライドして、デバイスがランドスケープ モードのときに ModalViewController A をプッシュします。縦向きモードに戻すと、ModalViewController A は閉じられます。ただし、ModalViewControllers B、C、または D が表示される他のケース (ボタン タッチ後) があります。これらが表示されているときに、デバイスを横向きにして後ろ向きにすると、ModalViewController BC または D が不適切に破棄されます。

ModalViewController が表示されている場合でも、メインの ViewController で -orientationChanged がメッセージを送信されていることを確認できます。ModalViewController BC または D が表示されているときに、そのコードをバイパスするために -orientationChanged メソッドに追加できる条件はありますか?

ありがとうございました!

4

2 に答える 2

6

メイン ビュー コントローラーの modalViewController プロパティがビュー コントローラーの 1 つであるかどうかを確認できます。

于 2010-08-21T22:27:17.727 に答える
1

このコードを使用して、最後の ModalViewController を見つけることができます。

UIViewController *leafController = self;
while(true) {
    if (leafController.modalViewController) {
        leafController = leafController.modalViewController;
        continue;
    }
    break;
}
[leafController presentModalViewController:showController animated:YES];
于 2011-12-25T15:50:22.713 に答える