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

Posted

技术标签:

【中文标题】接收者没有带标识符的转场,尽管转场实际上是声明的【英文标题】:Receiver has no segue with identifier, though the segue is actually declared 【发布时间】:2018-06-29 12:27:36 【问题描述】:

我正在一个新的 Swift 项目中工作,我正在尝试在按下按钮时执行segue 的简单任务。但是,每当我尝试触发 segue 时,都会弹出以下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<Ma2Mi.LandingViewController: 0x7f99c65122b0>) has no segue with identifier 'showLogin''

比较简单,除了实际上有一个名为showLogin的segue:

(顶视图控制器的类型为LandingViewController。)

这是调用 segue 的方式:

loginButton.addAction 
    self.performSegue(withIdentifier: "showLogin", sender: nil)

这么简单的任务怎么会失败?也许是一个错误,或者我忽略了什么?

谢谢。

【问题讨论】:

LandingViewController 的实例是如何创建的? @Paulw11 这都是故事板。 LandingViewController 是这个故事板的根 viewController UINavigationController 也许你 ctrl 从 UI 元素而不是故事板中的视图控制器实例拖动? @AndréSlotta 我已经尝试重新建立连接\ 可能是segue名称中的空格?如果不是,这没有任何意义。 :) 【参考方案1】:

您是否在触发 segue 的 ViewController 上使用了所需的 init() 函数?在我删除它之前,我遇到了同样的问题。

【讨论】:

以上是关于接收者没有带标识符的转场,尽管转场实际上是声明的的主要内容,如果未能解决你的问题,请参考以下文章

如何执行条件转场

iOS 开发--转场动画

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

OpenGL 实现视频编辑中的转场效果

类似nike+香蕉打卡的转场动画效果-b

使用模态转场时没有动画