web-dev-qa-db-ja.com

ナビゲーションコントローラー内からプッシュビューを閉じる

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

2番目のビューコントローラーにボタンがあり、これを押すとコードが実行され、1番目のビューコントローラーへのデリゲートコールバックが実行されます。再びこれはうまくいきます。

ここで、戻るボタンが押されたかのように、コードから2番目にプッシュされたビューを閉じる必要があります。私はdismissModalViewCcontrollerAnimatedとdismissViewControllerAnimatedを使用してみましたが、どちらもビュー2と1を削除するナビゲーションコントローラー全体を閉じます(メインメニューにbakを返します)。

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

24
Darren

UINavigationControllerへの参照を取得して呼び出します

- (UIViewController *)popViewControllerAnimated:(BOOL)animated

その上に。

38
Stavash

Swiftでは、メソッドを呼び出します

self.navigationController?.popViewControllerAnimated(true)
11
Garrett Cox

プッシュセグエを使用する場合は、popViewControllerを使用します。

@IBAction func backButtonClicked(_ sender: Any) {
    self.navigationController?.popViewController(animated: false)
}
3
A.G

Swiftでは、次のように呼び出すこともできます。

self.navigationController?.popToRootViewControllerAnimated(true)
2
jnwagstaff

Objective-Cでは

[self.navigationController popViewControllerAnimated:YES];

最初のrootコントローラへのジャンプ

[self.navigationController popToRootViewControllerAnimated:YES];

または特定のコントローラへの可能な移動です

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

コントローラを動かすアニメーション固有のアニメーションプロセス。アニメーションがfalseの場合、コントローラーはアニメーションなしで表示されます。 UIViewControllerは、スタックにあるものからである必要があります。

1
Jan Damek

NavViewControllerがUIModalPresentationFullScreenで使用される場合、以下の行が機能します

self.navigationController?.dismiss(animated: true, completion: nil)
0
arun-r