2012-02-28 10 views
0

私はストーリーボードでUTabBarControllerでアプリケーションを試してみました。AppDelgateからView Controllerを表示

表示されています。しかし、初めてのユーザー起動アプリの場合は、firstTimViewControllerも表示したいと思います。したがって、AppdelgateのdidFinishLaunchingWithOptionsにこのビューを表示する必要があります。

私はコードの下に使用しました:

UIStoryboard *storyboard = window.rootViewController.self.storyboard; 
    StartupViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"StartupTableIdentifier"]; 
    [self.window.rootViewController presentModalViewController:svc animated:NO]; 

それは私に次のエラー与える:

がキャッチされない例外により「NSInvalidArgumentException」にアプリを終了し、理由:「アプリケーションがnilモーダルを提示しようとしましたターゲットコントローラを表示します。

+0

これをデバッグすると、storybaord nilですか? – nycynik

答えて

1

アプリのストーリーボードを設定しましたか?ストーリーボードの名前は一致する必要があります。プロジェクトをクリックし、ターゲットをクリックして、Main Scoreboardの名前がプロジェクトのStoryboardの名前と一致していることを概要タブで確認します。

initalビューコントローラがチェックされていることを確認し、あなたがinitalビューコントローラを持っていることを確認する:

enter image description here

+0

私は上記のコードを次のように変更しました:UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ "MainStoryboard"バンドル:[NSBundle mainBundle]]; StartupViewController * svc = [ストーリーボードinstantiateViewControllerWithIdentifier:@ "StartupTableIdentifier"]; [self.window.rootViewController presentModalViewController:svc animated:NO];今、エラーを表示していません。何も起こらない。最初のコントローラを表示せずにただちにUITabBarを表示します。 – user836026

+0

OK、ストーリーボードに最初のコントローラーセットがあることを確認します。ストーリーボードでストーリーボードをクリックし、最初のView ControllerにするView Controllerをクリックしてから、atrributesインスペクタの下にある "Inital View Controller"に – nycynik

+0

がスクリーンショットを追加したことを確認します。 – nycynik

1

(それが却下された後に)ちょうどあなたがfirstTimViewControllerから設定することを設定NSUserDefaultsを持っていないのはなぜストーリーボードのrootVC(最初のTabBar VC)でその設定を確認してください。初めてアプリを起動したときに、ユーザーがfirstTimeVCを見て確認したかどうかを確認し、見つからない場合はTabBar VCから提示します。

私はAppDelegateだけを残して、ロジックをTabBar VCにします。

+0

あなたが言ったことをやろうとしたので、このコードを追加しました:UIStoryboard * storyboard = self.storyboard; StartupViewController * svc = [ストーリーボードinstantiateViewControllerWithIdentifier:@ "StartupTableIdentifier"];それはうまく動作ボタンの例のタブからトリガされたが、それはViewDidLoadメソッドから動作しませんでした。どこでこのコードをrootVCに置くことができますか? //新しいView Controllerをここで明示的に設定します。 [self presentViewController:svc animated:はい完了:なし]; – user836026

+0

AppDelegateのdidFinishLaunchingWithOptionsメソッドは、単にYESを返す必要があります。ストーリーボードをインスタンシエートするためのコードをそこに置く必要はありません。あなたがプロジェクト設定からそれを行うことができます。この投稿は、私が話していることをあなたに示します。 http://irockios.com/?p=32 –

+0

しかし、rootVCのメソッドでは、firstVCを表示するコードを記述します。私はViewDidLoadに入れようとしましたが、機能しませんでした。ボタンでトリガされたメソッドを置いたときにのみ動作します。これは私のニーズには当てはまりません。 – user836026

関連する問題