これは単純であるように思えますが、多くの困難なニュアンスがあることが証明されています.スタックオーバーフローの他の場所で、これに完全に、明確に、そして簡単に答えている答えを見つけていません.
簡単に言えば、ストーリーボードを使用してアプリケーション フローをレイアウトする iPad アプリケーションと、プライマリ ルート ビュー コントローラーとして分割ビュー コントローラーがあります。
このアプリケーションは起動時に、ログイン資格情報が保存されているかどうかを確認し、保存されている場合は直接 UI にジャンプし、そうでない場合はフルスクリーンのログイン ページを表示します。
ただし、この条件チェックはどこで行うべきで、ログイン画面はどのようにインスタンス化する必要があるのでしょうか?
考えられるすべての順列を試しました。
アプリではデリゲートは明らかな場所のように見えますが、ストーリーボードからのビューがまだライブではないため、セグエまたはモーダル ポップアップの呼び出しは無視されているようです。
分割ビューの詳細コントローラーの起動メソッドでは、次の明らかな場所のようです。
私が見つけることができる最も実用的なソリューションは、 https ://stackoverflow.com/a/8224389/529774 で説明されています。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
}
しかし、分割ビューの詳細ビュー コントローラによって呼び出されるこの実装では、基になる分割ビューが画面上で短時間点滅します。
viewDidAppear から viewWillAppear に変更すると、フラッシュは発生しませんが、画面が横向きに回転しても、ログイン ビューは縦向きで描画されます。
私が言ったように、この種の条件付きログイン表示は一般的で簡単であるように思えますが、分割ビュー、ストーリーボード、回転認識を組み合わせ、UI が点滅しないようにする単純な作業例はどこにも見つかりません。
任意のヒント?うまくいく例へのポインタ?