从Segue传回数据

时间:2015-02-11 20:02:10

标签: ios objective-c

我已经为iOS编程了几个月,想要用新功能完成我的游戏。现在,当人们玩游戏并输掉游戏时,他们会看到“游戏结束”视图。

现在我想要的是人们首先看到一个视图,他们可以使用他们获得的已购买的积分,并使用extra seconds or life返回游戏。但我不是以正确的方式做到这一点。

方式我尝试做:

          - Save Me View (Segue)
Game view - 
          - Game Over View (Segue)

所以,你输了,自动进入save me视图,按下关闭并立即转到game over。否则,请在显示Save Me视图之前使用已保存的NSUserDefaults。

所以我使用NSUserDefaults来保存以前的游戏关卡/积分等,这不是正确的做法,而且流程变得复杂。

第二次尝试: 我已经尝试过,但我最后一步陷入困境。因为我正在使用Segue和委托,我不知道如何让我的GameView成为SaveView的代表,而协议已经在那里..我已经遵循了这个:Passing Data between View Controllers

现在在第6步,它不起作用,因为我正在使用模态segue与我的UIViewControllers和没有UINavigationControllers。我在我的代码atm中有这个:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"SaveMe"]){

        SaveMeViewController *vc = [segue destinationViewController];
        // Here needs to come that GameView (This Class) is the delegate for SaveMeViewController. Tried vc.delegate = self; but this doesn't work.
        [self savePoints];
    }
}

2 个答案:

答案 0 :(得分:1)

您可以在给定视图中设置委托,传递游戏结束的方式。

答案 1 :(得分:-1)

正如我的理解使用@property或委托传递数据一样,它会对你有帮助。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
if ([segue.identifier isEqualToString:@"SaveMe"]) {
    SaveMeViewController * vc = segue.destinationViewController;
// create property in SaveMeViewController and access that property and pass values
    vc.property = value to assgin;
  }
}