我意识到还有其他这样的主题,但没有一个真正有用。我试图将变量从一个视图变为另一个视图,但我完全不知道如何。
为了给一些背景故事,我的游戏是一个水果忍者喜欢的游戏,其中的东西在屏幕上,你必须切片。如果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中的文本字段中存储的任何名称(可以在任何时候玩游戏),并以某种方式存储它以供将来参考。它不应该存储在文件中,因为这是下周的任务。
由于抄袭问题,我不想发布整个程序,但是如果有其他部分可以让它更容易理解,我一定会发布它们。
提前致谢, 基督教
答案 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];
不知道这是不是最好的方式......
运气好!