找不到带标识符的segue

时间:2014-04-20 15:33:24

标签: objective-c xcode5 segue

我有以下代码:

在1级(GamePlay1)中,如果游戏结束,我有改变视图控制器的方法:

 -(void)end
 {
   [self performSegueWithIdentifier:@"menu1" sender:self];
 }

在2个SKView类中,我有一个方法可以调用1个类中的函数来更改视图控制器:

 -(void)gameEnded
 {
     GamePlay1 *gp1 = [[GamePlay1 alloc]init];
     [gp1 end];
 }

我收到警告:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<GamePlay1: 0x156329e0>) has no segue with identifier 'menu1''

我试图改变seque名称几次,我也试图清理我的项目,删除应用程序并重新安装,但结果是一样的。

1 个答案:

答案 0 :(得分:0)

segue在故事板中定义,当使用alloc和init手动实例化类时,控制器没有对IB对象的引用,因此没有定义segue。您希望使用故事板本身来实例化您的控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
GamePlay1 *controller = [storyboard instantiateViewControllerWithIdentifier:@"GamePlay1"];
[controller end];

请注意,这不是执行segue的正确方法,您需要获取对当前实例化viewcontroller的引用,而不是创建一个新的。(/ p>