我第一次遇到这个问题。我在堆栈溢出时检查了类似的问题,但没有一个解决方案可以解决我的问题所以我有这个帖子。
到目前为止,我有两个视图controllers
(让我们说A和B),我试图将它们与一个名为" toB"的segue连接起来。当我运行该程序时,Xcode告诉我Receiver(B) has no segue with identifier "toB"
。
我非常确定identifier
和代码中storyboard
的拼写完全相同。并且segue的行已连接A view controller
和B view controller
。
但两个视图storyboard
的{{1}} ID不同。这是问题??
希望有人可以帮助我。提前谢谢!
解
感谢@Amit Shelgaonkar的提示!就我而言,将controllers
移至performSegueWithIdentifier
仍然无法正常工作,但将其移至viewDidAppear
可以解决问题!
我仍然不知道为什么它在我的情况下不起作用,因为当我尝试开发测试应用并将applicationWillEnterForeground
放入performSegueWithIdentifier
时,它完美地运作
答案 0 :(得分:1)
检查内容:
1. A和B之间的争论,segue的名字
2.代码应如下所示:[self performSegueWithIdentifier:@"toB" sender:self];
3.检查您的B视图是否具有自定义类
的 4。尝试清理项目并再次运行。
答案 1 :(得分:1)
您在performSegueWithIdentifier:sender:
中致电viewDidLoad
。您无法解除尚未提交的UIViewController
。 viewDidLoad
具有纯粹的内存管理功能,您可以将其用作(部分)构造函数。可行的方法是在segue
中开始viewDidAppear
,但我建议您在第一时间开始使用您想要的视图。
答案 2 :(得分:0)
有点老但希望这有助于我遇到同样的问题。完成了这里的所有建议后,问题变成了我的接收视图,在该视图的类声明中,我将其设置为ViewController而不是UIViewController。
e.g。我最初有这个并且错了
class viewB: ViewController{
这是对的
class viewB: UIViewController{