【问题标题】:Popping ViewController on Swift在 Swift 上弹出 ViewController
【发布时间】:2014-10-13 13:27:15
【问题描述】:

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

只写了这行代码却抛出异常;

在展开可选值时意外发现 nil

self.navigationController.popViewControllerAnimated(true)

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

self.navigationController?.popViewControllerAnimated(true)

如何解决?

【问题讨论】:

  • 这似乎太明显了,但你确定你访问你的navigationController 正确吗?即 self.navigationController 不为零?

标签: ios uinavigationcontroller swift


【解决方案1】:

你需要正确解开你的navigationController

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

【讨论】:

  • 这基本上和可选链的效果一样;如果它不是 nil 就可以工作,如果是则什么都不做。
  • 这与问题的有效代码没有什么不同。
【解决方案2】:

斯威夫特 3.0 这对我有用

self.navigationController?.popViewController(animated: true)

【讨论】:

  • _ = 这里不需要
  • 如果你没有使用变量的返回类型,那么你可以这样写_ =
【解决方案3】:

在我的情况下,我使用主详细信息视图(拆分视图控制器)。 我的详细信息视图控制器嵌入在导航控制器中。所以当我想关闭我的详细信息视图控制器时。我不得不从父级的导航控制器中弹出它(拆分视图控制器) 像这样。

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

希望这对某人有所帮助。

【讨论】:

  • 是的!我需要得到navigationController的navigationController!!
  • 哇!在拆分视图控制器的情况下工作。 +1
【解决方案4】:

您正在使用的视图控制器似乎没有嵌入到导航控制器中。如果有一个导航控制器,即self.navigationController 不是 nil,那么这两行应该都能正常工作,即使后者是首选,因为它使用可选链接。

确保您已将视图控制器嵌入到导航控制器中。您可以通过在 Storyboard 编辑器中选择 View Controller 并单击 Editor -> Embed In -> Navigation Controller 来实现。还要确保您的 Storyboard 入口点(指示首先显示哪个视图控制器的箭头)指向导航控制器或之前。

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 2015-08-16
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多