performSegueWithIdentifier 抛出奇怪的错误
performSegueWithIdentifier throwing strange error
我有一个项目,其中有故事板。故事板包含几个视图控制器。我将简化它并省略不必要的细节。在 Navigation Controller 中,有几个 UIViewControllers 与 segues 相连。 (见下面的截图...)
在底行从左到右依次为 导航控制器 ➞ VC1 ➞ VC2。 VC1 在顶行也有一个到 VC3 的手动转场,即 VC3 ➞ VC4。 VC1 是应用程序的起始视图控制器。从 VC1 连接有两个 segue。来自 VC1 ➞ VC2 的转场是主要转场,来自 VC1 ➞ VC3 是次要的。当用户 运行 首次使用应用程序作为一种 welcome/getting 启动序列时,将以编程方式调用辅助转场。
我将其设置为从 this post here 开始,引用了第二个最受好评的 post,其中用户建议在起始 VC 文件本身和other VC 然后调用 performSegueWithIdentifier.... 这就是问题所在。
运行安装此应用时,没有编译时错误。一切看起来都不错。它加载了,我有这个设置进入视图加载,现在我强制它 运行 就好像它是第一次这样......
override func viewDidLoad() {
super.viewDidLoad()
let firstVisit = true
if firstVisit == true {
self.performSegueWithIdentifier("welcomeSegue", sender: self)
}
// Do any additional setup after loading the view.
}
所以它加载了。我可以告诉它尝试显示 VC1,然后 VC3 根据需要迅速被推到顶部。 VC3显示,精彩。当我按下 VC3 上的唯一按钮时会出现问题,该按钮应该从 VC3 ➞ VC4 执行典型的转场。这是我收到以下错误的时候:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<X.VC1>) has no segue with identifier 'welcomeSegue''
现在让我感到奇怪的是,尽管 VC3 已正确呈现,但此错误源自 VC1,如 Receiver (<X.VC1>)
。我很难过。我在网上发现的所有错误都显示了其他对我不起作用的解决方案。如果你不相信我说我知道拼写是正确的,A) 它正确地加载了视图控制器,B) 这里有一个截图。
我不明白:[
如果您有任何建议,请告诉我。谢谢大家
** 再次提醒,此应用程序会按应有的方式正确加载和显示 VC3。之后,当我尝试转至 VC4 时出现错误,但通过没有标识符的界面构建器转接是正常的,因为它不需要 LINK 转至代码,因为转至 VC3确实。
编辑:Here is a sample project 正常运行。我无法区分让我与众不同的区别。
编辑#2:我承认犯了一个愚蠢的错误。标记的解决方案已找到并更正它,项目现在可以正常运行。谢谢大家
看来你还没有设置segue identifier
。 performSegueWithIdentifier
方法试图调用 welcomeSegue
。但它不可用,所以崩溃发生了。
要删除以下崩溃,请按照以下步骤操作。
第 1 步:点击两个 UIViewController
之间的 segue。像
第 2 步:现在检查面板右侧那个转场的 属性。将标识符名称写为 welcomeSegue.. 就像
现在运行你的项目,你将面临任何崩溃..
我研究了你的项目,发现你为你的 VC4 分配了错误的 class,如下图所示:
只需删除 HomeVC 并为其分配新的 class 即可正常工作。
我有一个项目,其中有故事板。故事板包含几个视图控制器。我将简化它并省略不必要的细节。在 Navigation Controller 中,有几个 UIViewControllers 与 segues 相连。 (见下面的截图...)
在底行从左到右依次为 导航控制器 ➞ VC1 ➞ VC2。 VC1 在顶行也有一个到 VC3 的手动转场,即 VC3 ➞ VC4。 VC1 是应用程序的起始视图控制器。从 VC1 连接有两个 segue。来自 VC1 ➞ VC2 的转场是主要转场,来自 VC1 ➞ VC3 是次要的。当用户 运行 首次使用应用程序作为一种 welcome/getting 启动序列时,将以编程方式调用辅助转场。
我将其设置为从 this post here 开始,引用了第二个最受好评的 post,其中用户建议在起始 VC 文件本身和other VC 然后调用 performSegueWithIdentifier.... 这就是问题所在。
运行安装此应用时,没有编译时错误。一切看起来都不错。它加载了,我有这个设置进入视图加载,现在我强制它 运行 就好像它是第一次这样......
override func viewDidLoad() {
super.viewDidLoad()
let firstVisit = true
if firstVisit == true {
self.performSegueWithIdentifier("welcomeSegue", sender: self)
}
// Do any additional setup after loading the view.
}
所以它加载了。我可以告诉它尝试显示 VC1,然后 VC3 根据需要迅速被推到顶部。 VC3显示,精彩。当我按下 VC3 上的唯一按钮时会出现问题,该按钮应该从 VC3 ➞ VC4 执行典型的转场。这是我收到以下错误的时候:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<X.VC1>) has no segue with identifier 'welcomeSegue''
现在让我感到奇怪的是,尽管 VC3 已正确呈现,但此错误源自 VC1,如 Receiver (<X.VC1>)
。我很难过。我在网上发现的所有错误都显示了其他对我不起作用的解决方案。如果你不相信我说我知道拼写是正确的,A) 它正确地加载了视图控制器,B) 这里有一个截图。
我不明白:[ 如果您有任何建议,请告诉我。谢谢大家
** 再次提醒,此应用程序会按应有的方式正确加载和显示 VC3。之后,当我尝试转至 VC4 时出现错误,但通过没有标识符的界面构建器转接是正常的,因为它不需要 LINK 转至代码,因为转至 VC3确实。
编辑:Here is a sample project 正常运行。我无法区分让我与众不同的区别。
编辑#2:我承认犯了一个愚蠢的错误。标记的解决方案已找到并更正它,项目现在可以正常运行。谢谢大家
看来你还没有设置segue identifier
。 performSegueWithIdentifier
方法试图调用 welcomeSegue
。但它不可用,所以崩溃发生了。
要删除以下崩溃,请按照以下步骤操作。
第 1 步:点击两个 UIViewController
之间的 segue。像
第 2 步:现在检查面板右侧那个转场的 属性。将标识符名称写为 welcomeSegue.. 就像
现在运行你的项目,你将面临任何崩溃..
我研究了你的项目,发现你为你的 VC4 分配了错误的 class,如下图所示:
只需删除 HomeVC 并为其分配新的 class 即可正常工作。