Receiver没有标识符“***”

我第一次遇到这个问题。 我检查了堆栈溢出类似的问题,但没有解决scheme可以解决我的问题,所以我有这个post。

到目前为止,我有两个视图controllers (让我们说A和B),我试图用一个名为“toB”的segue连接它们。 当我运行这个程序的时候,Xcode告诉我Receiver(B) has no segue with identifier "toB"

我很确定storyboard和代码中identifier的拼写完全相同。 并且segue的线连接了A view controllerB view controller

但两个视图controllersstoryboard ID是不同的。 这是问题吗?

希望有人能帮助我。 提前致谢!


感谢@Amit Shelgaonkar的提示! 在我的情况下,移动performSegueWithIdentifier viewDidAppear仍然无法正常工作,但将其移动到applicationWillEnterForeground解决问题!

我仍然不知道为什么它不起作用,因为当我试图开发一个testing应用程序,并把performSegueWithIdentifier放在viewDidAppear ,它完美的作品。

你可以调用performSegueWithIdentifier:sender:viewDidLoad 。 你不能closures还没有出现的UIViewControllerviewDidLoad具有纯粹的内存pipe理function,你可以使用它作为构造函数的一部分。 什么可能工作,是开始在viewDidAppearsegue ,但是我会build议首先你想要的视图开始。

要检查什么:
A和B之间,塞格的名字。
2.代码应该是这样的: [self performSegueWithIdentifier:@"toB" sender:self];
3.检查你的B视图是否具有自定义类。
4.尝试清理项目并再次运行。

有点老,但希望这有助于我有同样的问题。 经过这里所有的build议,问题变成了我的接受视图,在该视图的类声明中,我将其设置为ViewController而不是UIViewController。

例如,我原来是这样的,是错的

 class viewB: ViewController{ 

这是对的

 class viewB: UIViewController{