UISplitViewController の上にモーダル ViewController を表示する必要があります (つまり、横向きの場合、マスター ビューと詳細ビューの両方を隠します)。
私のコードは Apple のMultiple Detail Viewsのサンプル コードに基づいており、didFinishLaunching に presentModalViewcontroller を追加しました。
モーダル ビューを表示するために、これを使用しました。
[self.window.rootViewController presentModalViewController:entryView animated:NO];
この、
[[self.splitViewController.viewControllers objectAtIndex:0] presentModalViewController:entryView animated:NO];
...両方とも同じように動作します (以下で説明します)。
モーダル ビューは意図したとおりに表示されます。つまり、ビューがポップアップし、必要に応じて UISplitView をカバーします。これまでのところすべて順調です。
ただし、モーダル ビューを表示した結果として、iOS は隠蔽された UISplitViewController マスター ビューに対して willHideViewController を呼び出します。マスタービューが隠されているので、それは合理的だと思います。
willShowViewController は、 willHideViewControllerで行われた変更を元に戻すために呼び出されない (つまり、マスター ビューが非表示のときに詳細ビューに追加されたポップオーバー ボタンを削除する) ため、モーダル ビューが閉じられたときに実際の問題が発生します。
この不要なポップオーバー ボタンは、詳細ビューのナビゲーション バーに表示され、通常は迷惑になります。
モーダル ビューが閉じられたときに willShowViewController が呼び出されるようにする方法、またはこの問題を解決する方法について考えていただければ幸いです。