在Swift中弹出ViewController

时间:2014-08-20 08:49:54

标签: ios uinavigationcontroller swift

我需要从导航控制器中弹出一个UIViewController。

只需编写这行代码,但会出现异常;

在解包可选值时意外发现nil

self.navigationController.popViewControllerAnimated(true)

如果我将导航控制器设为可选,则此行无效,无弹出

self.navigationController?.popViewControllerAnimated(true)

如何解决?

4 个答案:

答案 0 :(得分:82)

您需要正确打开导航控制器

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

答案 1 :(得分:16)

Swift 3.0 这对我有用

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

enter image description here

答案 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入口点(指示首先显示哪个视图控制器的箭头)指向导航控制器或之前。