2013-04-02 38 views
0

贝娄我有一些代码,只需通过Xcode中的代理系统隐藏一个按钮。我相信这一切都有效,但是当我将视图传回到'leveSelector'视图时,委托无效,因此按钮不会显示为未隐藏。因此,我想申请一些NSUserDefaults来保存按钮状态,以便当我在游戏后期回到'levelComplete'视图时,我希望该按钮不被隐藏。如何将按钮的隐藏状态保存为NSUserDefault?

这里我对delegate系统我使用的代码:

在这里,我有levelComplete代码... .H

#import <UIKit/UIKit.h> 
#import "levelComplete.h" 
#import "LevelSelector.h" 

@interface levelComplete : UIViewController{ 
    } 
@property (nonatomic, strong) id<CustomDelegate> delegatePpty; 

@end 

.M

@implementation levelComplete 
@synthesize delegatePpty; 

-(void)someAction 
{ 
[self.delegatePpty hideUnhidebutton:YES];//Call the delegate method to execute 
} 


- (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [self someAction]; // Here I call my action 
    } 
@end 

这里我有leveSelector代码...

.H

@protocol CustomDelegate <NSObject> 
    -(void)hideUnhidebutton:(BOOL)value; 
    @end 

#import <UIKit/UIKit.h> 
#import "levelComplete.h" 
#import "LevelSelector.h" 

@interface LevelSelector : UIViewController <CustomDelegate>{   

} 

@property (nonatomic, strong) UIButton *level1; 

@end 

.M

@implementation LevelSelector 
@synthesize level1; 

-(void)hideUnhidebutton:(BOOL)value 
{ 
    [self.level1 setHidden:value]; 

    } 

所以要澄清,我想保存按钮时,已隐藏的NSUserDefault。 在这种情况下,我想要隐藏的按钮叫做level1

编辑:感谢大家谁张贴申请代码工作很大

+0

可能重复[保存字符串到NSUserDefaults?](http://stackoverflow.com/questions/3074483/save-string-to-the- NS userdefaults) –

回答

1

Sapi的回答已经覆盖你的评论我将如何去加载NSUserDefaults

BOOL yourBoolValue = YES; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[NSNumber numberWithBool:yourBoolValue] forKey:@"YourVariableKey"]; 

最后一行已经有了你想要的结果。 [NSUserDefaults standardUserDefaults]是一个单例,也是持久的,因此您可以在每个上下文中创建它,并拥有相同的实例。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL restoredBoolValue = [[defaults objectForKey:@"YourVariableKey"] boolValue]; 
[self.level1 setHidden:restoredBoolValue]; 

蚂蚁就是这样。 您基本上可以将所有内容保存在NSUserDefaults中。只要看看Apple's reference

4

您可以将值保存到NSUserDefaults用简单的方式:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[NSNumber numberWithBool:value] 
      forKey:@"SomeSensibleKey"]; 

您可以查看保存的状态

[[defaults objectForKey:@"SomeSensibleKey"] boolValue] 
+0

上面的代码的第一行加载了您的应用程序的标准默认字典。除非你有特殊的需求(这个问题,我不相信你会这么做)应该可以正常工作。 – sapi

1

要保存一个布尔值用户默认你必须调用setBool方法:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setBool:YES forKey:@"ButtonHiddenKey"]; 

要加载从用户的默认值一个布尔值(在init方法):

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
button.hidden = [defaults boolForKey:@"ButtonHiddenKey"]; 

也有消息来存储其他类型的变量,如setInteger,setFloat等