2013-04-02 35 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等