【问题标题】:Swift popToRoot not workingSwift popToRoot 不工作
【发布时间】:2015-03-20 21:31:25
【问题描述】:

这个突出显示的行是 popToRoot 应该继续的地方,成功注册后它应该重定向到根视图控制器。由于某种原因,它对我不起作用,实际上什么都没有发生,甚至没有错误。

我试过了

self.navigationController?.popToRootViewControllerAnimated(true)

【问题讨论】:

  • 您检查过navigationController 属性是否不为零吗?

标签: swift uiviewcontroller root


【解决方案1】:

您似乎根本没有使用导航控制器,所以我敢打赌self.navigationControllernil

你可以使用 unwind segue。所以在你的根视图控制器中,添加一个像这样的方法:

@IBAction func unwindToRoot(segue: UIStoryboardSegue) {
    print("successfully unwound")
}

然后在您想要放松的记分牌场景中,您可以控制-从按钮拖动到“出口出口”:

当你放手时,你可以选择放松动作:

这实现了“pop to root”功能,但不依赖于使用导航控制器。


如果您想以编程方式执行此展开操作,而不是从按钮到出口插座,而是从视图控制器图标到出口插座:

然后,在文档大纲中选择 segue 并给这个 segue 一个唯一的故事板 ID:

然后您可以使用相同的标识符字符串以编程方式执行转场:

performSegueWithIdentifier("UnwindToRoot", sender: self)

【讨论】:

  • 非常感谢您的回复。我试过了,但由于某种原因它崩溃了。但让我们稍后再谈。这种方式是否适用于我的 if 语句。它基本上是带有一些错误检查的注册表单(如果字段为空,并且解析后端错误)。 if error != nil { //Error } else { //Unwind segue?可以这样工作吗?
  • 您可以通过从视图控制器图标拖动到退出图标来创建“手动转场”;然后给那个segue一个唯一的标识符,然后你可以用performSegueWithIdentifier以编程方式执行它。请参阅扩展答案。
猜你喜欢
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2015-04-27
相关资源
最近更新 更多