2015-02-11 29 views
1

我已经为iOS编程了几个月,并希望用新功能完成我的游戏。现在,当人们玩游戏并失去时,他们会看到“游戏结束”的观点。从Segue传回数据

现在我想要的是人们首先看到一个视图,他们可以使用他们得到的积分并返回到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步它不会不起作用,因为我用我的UIViewControllers和没有UINavigationControllers使用模态segue。我在我的代码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]; 
    } 
} 

回答

1

你可以在给定视图中设置一个委托,以传回游戏结束。

+0

谢谢,试过了,但我卡在最后一步。因为我使用Segue和委托,所以我不知道如何让我的GameView成为SaveView的委托,而协议已经存在了..我遵循这个:http://stackoverflow.com/questions/5210535 /传递数据之间的视图控制器我会编辑我的OP – Kets 2015-02-13 12:56:51

-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; 
    } 
} 
+0

是的,这就是我正在做的,但我现在创建一个委托传回数据,并传回数据,我需要了解如何让GameView成为SaveGame的代表来获取数据。 – Kets 2015-02-13 13:23:30

+0

已经能够解决问题 – 2015-02-13 17:10:03