2012-02-25 11 views
22

ボタンを表示するビューコントローラを備えたナビゲーションコントローラがあります。このボタンは、プッシュセグを使用して別のView Controllerにリンクされています。プッシュセグを使用すると、トップナビゲーションバーに戻るボタンが自動的に追加されます。これはすべて正常に動作します。戻るボタンを押すと2番目のビューがスライドし、1番目のビューに戻ります。ナビゲーションコントローラ内から押されたビューを閉じます

2番目のView Controllerにボタンがあり、それを押すとコードが実行され、1番目のView Controllerに代理コールが返されます。再度これはうまく動作します。

ここでは、2番目のプッシュされたビューを、コードから戻すだけで、戻るボタンが押されたかのようにします。 私はdismissModalViewCcontrollerAnimatedとdismissViewControllerAnimatedを使用しようとしましたが、両方ともビュー2と1(メインメニューに戻る)を削除するNavigation Controller全体を閉じます。

ビューをスライドさせる正しい方法を教えてください。

+0

を使うのか? – sch

答えて

36

あなたUINavigationControllerへの参照を取得し、その上に

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 

を呼び出します。

+7

ありがとうございます。それは、すばらしいGoogle検索のための正しい道のりに私を置いた。 これは機能しました [self.navigationController popViewControllerAnimated:YES]; – Darren

9

スウィフトでは、それはあなたも呼び出すことができる方法を迅速に

self.navigationController?.popViewControllerAnimated(true) 
2

を呼び出すことになります。Objective-Cのオン

self.navigationController?.popToRootViewControllerAnimated(true) 
1

はへジャンプ

[self.navigationController popViewControllerAnimated:YES]; 

です最初rootコントローラ

[self.navigationController popToRootViewControllerAnimated:YES]; 

またはコントローラを動かす特定のコントローラ

[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]; 

アニメーション特定アニメーションプロセスに可能動きです。アニメーションがfalseの場合、コントローラはアニメーションなしで表示されます。 UIViewControllerはスタック上にあるものでなければなりません。

2

我々はプッシュセグエを使用する場合は、あなたがテストするために使用されるコードを投稿することができ、その後、popViewController

@IBAction func backButtonClicked(_ sender: Any) { 
    self.navigationController?.popViewController(animated: false) 
} 
関連する問題