当标识符存在时,"Receiver没有带标识符的segue"

Lau*_*llo 3 interface-builder storyboard uiviewcontroller ios uistoryboardsegue

对于iOS应用程序,我有一个故事板和多个控制器,以及从控制器GameClass到控制器SettingsClass的segue .在视图中,控制器GameClass中的segue 有一个名为GameToSettings的标识符:

在此输入图像描述

但是,当我想从我的GameClass调用segue时:

[self performSegueWithIdentifier: @"GameToSettings" sender: self];
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<GameClass: 0xcf0c550>) has no segue with identifier 'GameToSettings''
Run Code Online (Sandbox Code Playgroud)

我尝试了很多我在其他文章中找到的技巧(比如重命名故事板,清理项目,更改模拟器格式,给segue另一个名字),但问题仍然存在.

我在这里上传了我的代码版本:http://www.petits-suisses.ch/Issue.zip.对我可以继续尝试的任何建议?
谢谢.

Ant*_*tzi 8

您不应该以这种方式实例化您的视图控制器:

GameClass *myNewVC = [[GameClass alloc] init];
Run Code Online (Sandbox Code Playgroud)

相反,使用

 [[UIStoryboard storyboardWithName:@"storyboard name" bundle:nil] instantiateViewControllerWithIdentifier:@"vc identifier">]
Run Code Online (Sandbox Code Playgroud)

编辑:看看https://github.com/mac-cain13/R.swift

它允许您使用自动完成轻松实例化,类型安全的方法: R.storyboard.main.myViewController