由于没有标识符错误的转场,无法执行转场

Posted

技术标签:

【中文标题】由于没有标识符错误的转场,无法执行转场【英文标题】:Unable to perform segue due to no segue with identifier error 【发布时间】:2017-02-24 03:30:58 【问题描述】:

当用户在警报中点击“确定”按钮时,我该怎么做才能将用户带到自定义视图控制器?

我有一个主控制器 -> 导航控制器 -> 第二个视图控制器。

主视图控制器有一个 segue “mainStoryBoard” 在第二个视图控制器上生成警报。

这就是我所拥有的

let alertController = UIAlertController(title: "title", message: "message",     preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler:  action
    in self.performSegue(withIdentifier: "mainStoryBoard", sender: self)
))

present(alertController, animated: true, completion: nil)
return

我得到的错误如下:

由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'Receiver () has no segue with identifier 'mainStoryBoard'

我已将标识符设置为“mainStoryBoard”,但仍然没有成功。

任何指导将不胜感激。

【问题讨论】:

您发布的代码有什么问题? @rmaddy 我得到了 - Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<udidtoolapp.Setup: 0x1014684b0>) has no segue with identifier 'mainStoryBoard'' 确保你给 segue 的标识符完全等于“mainStoryBoard” 也许these search results 会有所帮助。 您确定设置正确吗?您点击了 segue,然后转到属性检查器并使用“mainStoryBoard”(区分大小写)填写“标识符”字段? 【参考方案1】:

感谢@MikeG 的指导,我得以让它工作。

问题是我创建了一个从main view controllersecond view controller 的segue。

解决方案

second view controllermain view controller 创建一个segue,如果你有一个navigation controller,创建从second view controllernavigation controller 的segue。

代码保持不变。

【讨论】:

【参考方案2】:

您是如何加载主视图控制器的?尝试使用 instantiateviewcontrollerwithidentifier 而不是 alloc init 进行实例化。如果您仍然遇到此问题,请尝试清理项目并运行。

【讨论】:

以上是关于由于没有标识符错误的转场,无法执行转场的主要内容,如果未能解决你的问题,请参考以下文章

接收者没有带标识符的转场,尽管转场实际上是声明的

无法执行转场

无法以编程方式执行 segue

如何执行条件转场

模拟器不会在家庭 TableView 上启动

使用自定义转场执行自定义转换的正确方法 - 没有副作用