我需要从导航控制器中弹出一个UIViewController。
只需编写这行代码,但会出现异常;
在解包可选值时意外发现nil
self.navigationController.popViewControllerAnimated(true)
如果我将导航控制器设为可选,则此行无效,无弹出
self.navigationController?.popViewControllerAnimated(true)
如何解决?
答案 0 :(得分:82)
您需要正确打开导航控制器
if let navController = self.navigationController {
navController.popViewController(animated: true)
}
答案 1 :(得分:16)
答案 2 :(得分:6)
在我的情况下,我使用主详细信息视图(拆分视图控制器)。 我的详细信息视图控制器嵌入在导航控制器中。所以,当我想解雇我的详细信息视图控制器。我不得不从父级的导航控制器弹出它(拆分视图控制器) 像这样。
$this->addRow(
function () {
return $this->userRepo->dateTargetedActual;
},
[$teamMember, $date->year, $date->month],
$year,
'Stage target',
'target',
$teamMember->image
);
希望这有助于某人。
答案 3 :(得分:5)
您正在使用的视图控制器似乎未嵌入导航控制器中。如果有一个导航控制器,即self.navigationController
不是nil,那么两条线应该也能正常工作,即使后者是优选的,因为它使用可选的链接。
确保已将View Controller嵌入导航控制器中。您可以通过在Storyboard编辑器中选择View Controller并单击 Editor - >来完成此操作。嵌入 - >导航控制器。另外,请确保您的 Storyboard入口点(指示首先显示哪个视图控制器的箭头)指向导航控制器或之前。