self.performSegue 找不到storyboard-segue-ID,即使它已被命名

Posted

技术标签:

【中文标题】self.performSegue 找不到storyboard-segue-ID,即使它已被命名【英文标题】:self.performSegue cannot find storyboard-segue-ID even though it has been named 【发布时间】:2020-07-30 09:55:28 【问题描述】:

我正在尝试以编程方式在 LiveController.swift 中转义。相关代码在LiveController.swift

self.performSegue(withIdentifier:"openWelcomePage" ,sender:self)

抛出错误:

2020-04-16 20:51:44.614413-0400 alpha[53206:2805423] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<alpha.LiveController: 0x101c248c0>) has no segue with identifier 'openWelcomePage''

这表示segue 尚未命名。但它有:

全部故事板在这里:

注意突出显示的NavigationController 是源,它嵌入了附加到LiveController.swiftLive。 segue 的目标是带有Log inSign up 的页面。

注意当我将一个按钮放入LiveController 并将一个segue 从按钮拖到Welcome 视图中,并将其命名为buttonSegue

 self.performSegue(withIdentifier:"buttonSegue" ,sender:self)

按预期方式显示页面。

【问题讨论】:

【参考方案1】:

你需要从 LiveController 获得 segue,而不是从 Navigation Controller 获得

【讨论】:

所以这个 sn-p self.performSegue(withIdentifier:"buttonSegue" ,sender:self) 在 LIveController 中。但是我不能将一个 segue 从相应视图拖到 Storyboard 中的 LiveController 到登录页面,因为 xcode 不允许我。 你控制+拖动它从LiveViewController顶部的黄色圆圈到LoginPage吗? techotopia.com/images/b/b2/Xcode_8_storyboard_new_project.png【参考方案2】:

这可能是一些问题,因此请尝试以下修复:

    清理并构建您的项目。然后,再次运行。 退出 Xcode,打开项目并运行。 在Attribute Inspector 中,删除openWelcomePage 并将其留空。

希望这些建议对您有所帮助。

【讨论】:

除了 3 之外,我都做了这些。如果我删除了openWelcomePage,那么我应该如何引用它?澄清一下,在生产中不会有一个与 WelcomePage 相连的按钮。我只是想表明你可以从一个按钮开始,但不能以编程方式。 出现在Attribute Inspector 上的openWelcomePage 标识符引用了您在performSegue 中输入的字符串。我希望这能回答你的问题。 你能澄清一下吗?在 self.performSegue(withIdentifier:"foo" ,sender:self) 中,如果“foo”不是它自己的 segue 对象的名称,应该是什么?我是否使用目标的 Storyboard ID? 当然。对困惑感到抱歉。 self.performSegue(withIdentifier:"openWelcomePage" ,sender:self) 很好。我认为你应该做的是在你提供的图片中前两个词是Storyboard Segue,删除Selector中的openWelcomePage 另外,请尝试删除故事板转场 (openWelcomePage) 并将其再次附加到您要转场的视图。

以上是关于self.performSegue 找不到storyboard-segue-ID,即使它已被命名的主要内容,如果未能解决你的问题,请参考以下文章

self.performSegue(withIdentifier: "teacherDetail", sender: self) 需要点击两次

为 segue 做准备没有按预期工作

为啥完成不起作用?完成问题

自定义 segue 过渡动画

从modal中展示viewcontroller的调用方法

PyQt5 QGraphicsPathItem 绘制一个电阻