iOSでナビゲーションコントローラーの戻るボタンをプログラムで呼び出す


84

UINavigationControllerベースのiPhoneアプリで、メソッドで、戻るボタンを押してビューに戻るのと同等のプログラムを実行したいと思います。

つまり、次のように自動的に[ジョブ]ボタンを押します。

ナビゲーションコントローラーの画像

私が発信できる一般的なiOS通話はありますか、それともより多くの情報が必要ですか?

回答:


188

UINavigationController-popViewControllerAnimated:メソッドはあなたが望むことをするはずです:

[navigationController popViewControllerAnimated:YES];

12
スティーブとニールズに感謝します。私が使用したソリューションは[self.navigationControllerpopViewControllerAnimated:YES]でした。簡単;)
オーバーバウム2010年

これは、uitabbarに追加されたviewcontrollersを除いてうまく機能します。手がかりは?
virata 2012年

1
追加しました[self.navigationController popViewControllerAnimated:YES];が、何もしませんが、機能しているボタンをタップするとアラートが表示されます。
mohsin.mr 2013

うーん、コンソールに空白の画面、応答しないアプリ、次のメッセージが表示されます:「予期しない状態でナビゲーション遷移を終了します。ナビゲーションバーのサブビューツリーが破損する可能性があります。」
カート

24

プログラムでボタンを実際に押すのではなく、ボタンを押した結果をコピーするだけであると仮定すると、ナビゲーションコントローラーに現在のビューコントローラーをポップするように指示する必要があります。

[self.navigationController popViewControllerAnimated:YES];

これにより、スタックから削除され、前のViewControllerに戻ります。


21

Swift 3.0

ルートビューに戻る

self.navigationController?.popToRootViewController(animated: true)

前のビューに戻る

self.navigationController?.popViewController(animated: true)

スウィフト2.3

ルートビューに戻る

self.navigationController?.popToRootViewControllerAnimated(true)

前のビューに戻る

self.navigationController?.popViewControllerAnimated(true)

7

あなたは電話する必要があります

popViewControllerAnimated:

これは、ビューコントローラを追加するのとは逆です。 pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

が最良のオプションですが、同じView Controllerクラスを使用していない場合、または戻るボタンメソッドが呼び出される前にデリゲートが変更された場合は、次のことも試してください。

まず、戻るボタンを定義する必要があります---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

次に、backButtonTappedメソッドで呼び出すことができます-

[self.navigationController pushViewController:desiredViewController animated:YES];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.