web-dev-qa-db-ja.com

SwiftでViewControllerをポップ

Navigation ControllerからUIViewControllerをポップする必要があります。

このコード行を記述するだけですが、例外が発生します。

オプション値のアンラップ中に予期せずnilが見つかりました

self.navigationController.popViewControllerAnimated(true)

Navigation Controllerをオプションにすると、この行は無効になり、ポップされなくなります

self.navigationController?.popViewControllerAnimated(true)

解決方法は?

35
erdemgc

NavigationControllerを正しくアンラップする必要があります

if let navController = self.navigationController {
    navController.popViewController(animated: true)
}
82
karlofk

Swift 3.0これは私のために働いています

_ = self.navigationController?.popViewController(アニメーション:true)

enter image description here

17
Anit Kumar

私の場合、マスター詳細ビュー(Split View Controller)を使用しています。私の詳細ビューコントローラーは、ナビゲーションコントローラー内に埋め込まれています。そのため、詳細ビューコントローラーを閉じたい場合。このように、親のナビゲーションコントローラー(Split View Controller)からポップする必要がありました。

_ = self.navigationController?.navigationController?.popViewController(animated: true)

これが誰かを助けることを願っています。

7
spaceMonkey

使用しているView Controllerは、Navigation Controllerに埋め込まれていないようです。 Navigation Controllerがあった場合、つまりself.navigationControllerはnilではありません。オプションのチェーンを使用するため、後者の行が優先されますが、両方の行が同様に機能するはずです。

View ControllerがNavigation Controllerに埋め込まれていることを確認してください。ストーリーボードエディターでView Controllerを選択し、エディター->埋め込み-> Navigation Controllerをクリックすることで、これを行うことができます。また、ストーリーボードエントリポイント(最初に表示されるView Controllerを示す矢印)がNavigation Controllerを指しているか、その前にあることを確認してください。

5
Aleksi Sjöberg