ストーリーボードを使用して次のことを達成するのに問題があります。
セットアップが完了していない場合:アプリを実行->設定ビューコントローラーを表示->メインナビゲーションコントローラーを表示セットアップが完了した場合:アプリを実行->メインナビゲーションコントローラーを表示
したがって、基本的には、アプリをプログラムで設定ビューから開始する場合もあれば、メインナビゲーションコントローラーにスキップする場合もあります。
メインナビゲーションコントローラーからモーダルスタイルのセグエで設定ビューを表示することができましたが、表示方法がわかりません前メインナビゲーションコントローラーが表示されます。何か案は?
私はそれを少し違う方法で行うことができました:
UINavigationController
を使用します。performSegueWithIdentifier
を呼び出します。ちょうど別の解決策、これが役立つことを願っています。
デフォルトでは、メインストーリーボードの最初のView Controllerがインスタンス化され、アプリの起動時に自動的に表示されます。これを防ぐには、info.plistファイルからUIMainStoryboardFile
設定を削除する必要があります。
デフォルトのViewControllerがないため、アプリの起動時にプログラムで自由に作成できます。 IStoryboardのドキュメント を参照してください。 +storyboardWithName:bundle:
を使用してストーリーボードをロードしてから、–instantiateViewControllerWithIdentifier:
を使用して正しいViewControllerを作成します。また、.nibベースのUIで行っていたのと同じように、メインUIWindowを作成し、それにViewControllerのビューを追加する必要があります。 UIMainStoryboardFile
を設定しないと、メインウィンドウが作成されないことに注意してください 説明 を読んでください。
私はamoshavivに似た何かをしました、彼のアドバイスは健全です。私はそれを少し変えました、そして私はもう少し情報を与えるでしょう。 UIViewControllerから派生したカスタムMyInitialViewControllerクラスを作成し、これを初期ビューコントローラーにしました。ストーリーボードファイルで、すべての(私の場合は3つ)可能な「実際の」最初のビューコントローラーに適切な名前でモーダルセグエを作成しました。 MyInitialViewControllerクラスで、
- (void)viewDidAppear:(BOOL)animated;
メソッド、最初にどのビューに切り替えるかを確認してから、正しい方法を実行します
[self performSegueWithIdentifier:@"NameOfSegue" sender:self];
事実上、これにより、MyInitialViewControllerは、表示されたときに実行される切り替えにすぎません。このビューを実際に表示する必要がないため、ロード時に最初にこれを実行しようとしましたが、viewDidAppearは機能しますが、機能しませんでした。
これを視覚的にスムーズにするために、私は次のことを試みました。セグエのプロパティで、アニメーションを無効にしました。空のままにして、起動画像の背景色に合わせた背景色を付けました。