从一个视图到另一个视图获取变量

时间:2011-04-19 10:19:57

标签: iphone objective-c ios ipad

我意识到还有其他这样的主题,但没有一个真正有用。我试图将变量从一个视图变为另一个视图,但我完全不知道如何。

为了给一些背景故事,我的游戏是一个水果忍者喜欢的游戏,其中的东西在屏幕上,你必须切片。如果3个精灵离开屏幕未经检查,则游戏结束并通过视图屏幕翻转到游戏,并返回按钮。另外,这应该转到“flipSideView”,这是高分,但我对flipSideView转换的实现不起作用。这不是主要问题,主要问题是我不知道如何从mainView(将其存储为int)中的游戏得分到flipSideView(具有玩家名称)。

主视图通过tick方法中的条件更改为gameOverView(对游戏执行常规检查和方法)

if (lifeCounter < 1) 
{
        gameIsOver = YES;
        [self showInfo:0];
        [self viewGameOverScreen];
}

这将转到gameOverView,它将坐在那里直到按下重播按钮:

- (IBAction)replayAction:(id)sender 
{
        [self.delegate gameOverViewControllerDidFinish: self];
}

gameOverViewControllerDidFinish重新启动游戏并解除视图。

- (void) gameOverViewControllerDidFinish: (GameOverViewController *) controller
{
        [self restart];
        [self dismissModalViewControllerAnimated: YES];
}

重启方法只会重置主视图中的3个主要值(分数,等级,生命)。

当它重新开始时,游戏应该取得分数以及flipSideView中的文本字段中存储的任何名称(可以在任何时候玩游戏),并以某种方式存储它以供将来参考。它不应该存储在文件中,因为这是下周的任务。

由于抄袭问题,我不想发布整个程序,但是如果有其他部分可以让它更容易理解,我一定会发布它们。

提前致谢, 基督教

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

NSUserDefaults *currentScore = [NSUserDefaults standardUserDefaults];
[currentDefaults setFloat:yourScoreVariable forKey:@"HighScore"];
[currentDefaults synchronize];  

以上存储分数。 下面检索得分。

CGFloat fltHighScore;
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
fltHighScore = [currentDefaults floatForKey:@"HighScore"];

答案 2 :(得分:1)

<强>建议:

您可以将变量放在Controller类中,它们都可以访问它们。

最好在Controller中拥有可共享数据,然后查看是否必须在视图之间共享数据。

通过委托方法更新可共享数据。

答案 3 :(得分:0)

您可以使用您的应用代理。您需要在那里声明您的变量,然后您可以在整个应用程序中以下列方式访问它:

TestAppDelegate * appDelegate =(TestAppDelegate *)[[UIApplication sharedApplication] delegate]; NSString * string = [appDelegate.Placemarks objectForKey:appDelegate.title];

不知道这是不是最好的方式......

运气好!