接收者没有标识符为“***”的segue

Receiver has no segue with identifier"***"

第一次遇到这个问题。我检查了关于堆栈溢出的类似问题,但是 none 的解决方案可以解决我的问题,所以我有这个帖子。

到目前为止,我有两个视图 controllers(比如说 A 和 B),我正在尝试将它们与名称为 "toB" 的 segue 连接起来。当我运行程序时,Xcode告诉我Receiver(B) has no segue with identifier "toB"

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

但是两个视图controllersstoryboardID是不同的。是不是问题??

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


解决方案

感谢@Amit Shelgaonkar 的提示!在我的例子中,将 performSegueWithIdentifier 移动到 viewDidAppear 仍然不起作用,但是将其移动到 applicationWillEnterForeground 解决了问题!

我仍然不知道为什么它在我的情况下不起作用,因为当我尝试开发一个测试应用程序并将 performSegueWithIdentifier 放入 viewDidAppear 时,它运行得很好。

要检查的内容:
1. A和B之间的Segue,segue的名称。
2. 代码应如下所示:[self performSegueWithIdentifier:@"toB" sender:self];
3. 检查您的 B 视图是否具有自定义 class.
4。再次尝试清理项目和 运行。

您在 viewDidLoad 中调用 performSegueWithIdentifier:sender:。您不能关闭尚未显示的 UIViewControllerviewDidLoad 具有纯内存管理功能,您可以将其用作(a 的一部分)构造函数。可行的方法是在 viewDidAppear 中启动 segue,但我建议您首先从您想要的视图开始。

有点旧,但希望这对我有同样的问题有所帮助。 运行 通过这里的所有建议后,问题出在我的接收视图上,在该视图的 class 声明中我将其设置为 ViewController 而不是 UIViewController.

例如我原来有这个,但错了

class viewB: ViewController{

这是对的

class viewB: UIViewController{