なぜ次のことが起こっているのか(そしてそれを修正する方法)を理解するのに苦労しています。
分割ビュー ベースのアプリケーションを使用してアプリケーションを作成しました。
RootViewController.m にあるこのメソッドを呼び出す showTheModal という UiBarButtonItem を追加しました。
- (IBAction)showTheModal:(id)sender {
theModalController.modalPresentationStyle = UIModalPresentationFullScreen;
theModalController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:theModalController animated:YES];
if ([detailViewController popoverController] != nil)
[[detailViewController popoverController] dismissPopoverAnimated:YES];
もちろん、BarButtonItem は Default Root Controller の下部 (横向きの分割ビューの左側) またはポップアップの下部 (横向きの場合) に表示されます。
モーダル ビューは、ツールバーに配置されたボタンによって閉じられます。以下を呼び出します。
[self dismissModalViewControllerAnimated: YES];
私が抱えている問題は、モーダルがアップしている間に画面を回転させる場合です。さまざまなシナリオで何が起こるかを次に示します (start は showTheModal ボタンを押したときの方向を指し、end は、dismissModal ボタンを押したときの方向を指します)。
1) 開始風景、終了風景: すべて正常に表示されます。willHideViewController および willShowViewController メソッドが RootViewController で呼び出されない (予想どおり)
2) 横向きで開始し、縦向きで終了: UI は正常に表示されます。willHideViewController が 2 回実行される (なぜ?)
3) 縦向きの開始、縦向きの終了: UI は正常に表示されます。willHideViewController は 1 回実行されます (予想どおり)
4) 縦向きの開始、横向きの終了: 「ルート リスト」ボタンは詳細ビュー (分割ビューの右側) に残ります。willHideViewController と willShowViewController のどちらも呼び出されません (なぜ??)
#2 と #4 が期待どおりに動作しない理由について何か考えはありますか?