2016-12-21 6 views
0

私のiOSアプリでの支払いゲートウェイを統合しながら、以下のように、私はrootViewControllerプロパティを使用:それは仕事をしていませんrootViewControllerとは何ですか&いつ使用しますか?

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

UINavigationController *controller = [storyboard instantiateViewControllerWithIdentifier:@"navCtrlID"]; 

[[UIApplication sharedApplication].keyWindow setRootViewController:controller]; 

[self.navigationController presentViewController:controller animated:YES completion:nil]; 

は、しかし、今私は戻って戻るボタンを複数回押す必要があります。

なぜそうですか?

+2

ご質問ください。戻るボタンを何回か押しても何が起きていますか? – pjc90

+0

私はバックボタンを押すと、空の画面が表示されます。もう一度クリックすると、前のコントローラーに数回試行した後に戻っているように見えます。 –

答えて

1

RootViewControllerは、アプリケーションスタック上の最初のViewControllerです。 あなただけの方法であなたのAppDelegateでそれを設定する必要があります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 

あなたのケースでは、あなたはストーリーボードからそれをインスタンス化するので、IDとNavigationController「navCtrlIDは」最初に表示されます。 ViewControllerが1つしかない場合は、戻るキーを押すとナビゲーションスタックがポップされません。

このビューを追加する前にViewControllerが表示されている場合は、そのように表示しないでください。代わりに、たとえば:

[self presentViewController: controller animated:YES completion:nil]; 
+0

はい私は多くのビューコントローラを持っていますが、私は同じコードを表示していると言っているコードを使用しています。 –

+0

この新しいナビゲーションコントローラを表示する前に、どのような要素がありますか? – LopesFigueiredo

+0

この行を試して削除してください: "[[UIApplication sharedApplication] .keyWindow setRootViewController:controller];" – LopesFigueiredo

関連する問題