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.swift
的Live
。 segue 的目标是带有Log in
和Sign up
的页面。
注意当我将一个按钮放入LiveController
并将一个segue 从按钮拖到Welcome
视图中,并将其命名为buttonSegue
:
self.performSegue(withIdentifier:"buttonSegue" ,sender:self)
按预期方式显示页面。
【问题讨论】:
【参考方案1】:你需要从 LiveController 获得 segue,而不是从 Navigation Controller 获得
【讨论】:
所以这个 sn-pself.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) 需要点击两次