我在游戏App中有2个视图控制器。第一个VC不仅仅是介绍游戏。第二个VC是游戏玩法和GameOver屏幕。在GameOver屏幕上是一个BACK按钮,可以将您带回到第一个VC。在GameOver上也是最终得分和高分。例如,当前最终得分= 3,之前游戏的最终得分为2.出于某种原因,当我在从VC2到VC1的第二次转换期间单击BACK转到第一个VC时,最终得分将显示为2而不是3那不应该发生。但是,这对游戏玩法没有任何影响。但它仍然是一个烦人的错误/故障。
finalscore = UILabel
Highscore = UILAbel
int scoreNumber;
NSInteger HighScoreNumber;
-(void)GameOver{
if (scoreNumber <0) {
scoreNumber=0;
}
finalscore.text=[NSString stringWithFormat:@"Final Score: %i", scoreNumber];
if (scoreNumber >HighScoreNumber) {
[[NSUserDefaults standardUserDefaults]setInteger:scoreNumber forKey:@"HighScoreSave"];
Highscore.text=[NSString stringWithFormat:@"High Score: %i", scoreNumber];
}
HighScoreNumber=[[NSUserDefaults standardUserDefaults]integerForKey:@"HighScoreSave"];
Highscore.text=[NSString stringWithFormat:@"High Score: %li", (long) HighScoreNumber];
}
当我达到新的高分时,同样的事情发生在VC2到VC1分裂的第二次转换中,它显示以前的高分而不是当前的高分。这个故障或错误只发生在iOS 8中,而且从未发生在iOS 7中。
我不知道如何解决这个问题。可能是什么问题?
我使用MODAL unwind segue从VC1转到VC2并返回。
答案 0 :(得分:0)
我不知道这是不是问题,但我注意到你没有同步NSUserDefault
。
尝试添加它:
[[NSUserDefaults standardUserDefaults]setInteger:scoreNumber forKey:@"HighScoreSave"];
[[NSUserDefaults standardUserDefaults] synchronize]