2013-01-03 26 views
0

我的问题涉及到一个游戏关卡选择的简单方法。 例如:我有两个ViewControllers。在一个ViewController上我编写了一个游戏代码。如果我达到了游戏目标,我会显示一个hidenn按钮(UIButton.hidden = NO),它将我链接到另一个ViewController。到现在为止还挺好。但我很想保存这个状态,所以当我关闭并再次打开应用程序时,这个隐藏的按钮应该仍然可用,因为我已经达到了这个级别的目标。级别选择xcode没有cocos2d ....!

我试过使用NSUserDefaults,但我只是没有得到保存布尔值的边缘。我尝试了字符串,并且工作正常,但如何保存按钮触发的if else状态?

感谢您的帮助

+0

而如果没有的Xcode (无关)。 – 2013-01-03 17:48:17

回答

0

不知道如果我失去了一些东西,但它听起来相当简单:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"buttonVisible"]; 
BOOL buttonVisible = [[NSUserDefaults standardUserDefaults] boolForKey:@"buttonVisible"]; 

关于下面的讨论。通知模式会是这个样子: 在的viewController在有必要的目标得以实现:

[[NSNotificationCenter defaultCenter] postNotificationName:@"nextLevelGoalAchieved" object:nil]; 

在的viewController,你必须意识到变化:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeLevelButtonVisible) name:@"nextLevelGoalAchieved" object:nil]; 
+0

感谢您的快速回答。但是,如果下一级触发器的按钮位于不同的ViewController上,我该如何保持该按钮不再隐藏?那是我不太明白的地方。 thx – XJNR

+0

一种方法是使用通知。在我看来,通知模式实际上特别适用于游戏,因为您经常想让几个班级对同一事物做出反应。例如,你可能想要播放声音,改变乐谱并在两个精灵之间发生碰撞时发生动画... –

+0

好的。所以当我得到你的权利。通知模式适用于使用相同类的两个视图控制器?那看起来怎么样? – XJNR