Navigation ControllerからUIViewControllerをポップする必要があります。
このコード行を記述するだけですが、例外が発生します。
オプション値のアンラップ中に予期せずnilが見つかりました
self.navigationController.popViewControllerAnimated(true)
Navigation Controllerをオプションにすると、この行は無効になり、ポップされなくなります
self.navigationController?.popViewControllerAnimated(true)
解決方法は?
NavigationControllerを正しくアンラップする必要があります
if let navController = self.navigationController {
navController.popViewController(animated: true)
}
私の場合、マスター詳細ビュー(Split View Controller)を使用しています。私の詳細ビューコントローラーは、ナビゲーションコントローラー内に埋め込まれています。そのため、詳細ビューコントローラーを閉じたい場合。このように、親のナビゲーションコントローラー(Split View Controller)からポップする必要がありました。
_ = self.navigationController?.navigationController?.popViewController(animated: true)
これが誰かを助けることを願っています。
使用しているView Controllerは、Navigation Controllerに埋め込まれていないようです。 Navigation Controllerがあった場合、つまりself.navigationController
はnilではありません。オプションのチェーンを使用するため、後者の行が優先されますが、両方の行が同様に機能するはずです。
View ControllerがNavigation Controllerに埋め込まれていることを確認してください。ストーリーボードエディターでView Controllerを選択し、エディター->埋め込み-> Navigation Controllerをクリックすることで、これを行うことができます。また、ストーリーボードエントリポイント(最初に表示されるView Controllerを示す矢印)がNavigation Controllerを指しているか、その前にあることを確認してください。