Как сохранить скрытое состояние кнопки как NSUserDefault?

Ниже у меня есть некоторый код, который просто скрывает кнопку через систему делегирования в Xcode. Я полагаю, что все это работает, однако, когда я передаю представления обратно в представление 'leveSelector', делегат недействителен, поэтому кнопка не отображается как не скрытая. Из-за этого я хотел бы применить некоторые NSUserDefaults чтобы сохранить состояние кнопки, чтобы, когда я вернусь к представлению 'LevelComplete' позже в игре, я бы хотел, чтобы кнопка была не скрыта.

Здесь у меня есть код для 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...

.час

  @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,

Изменить: спасибо всем, кто опубликовал применить ваш код работал отлично

3 ответа

Решение

Ответ 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.

Вы можете сохранить значение в NSUserDefaults прямо:

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

Вы можете проверить сохраненное состояние с помощью:

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

Чтобы сохранить логическое значение в пользовательских значениях по умолчанию, вы должны вызвать метод setBool:

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

Чтобы загрузить логическое значение из пользовательских значений по умолчанию (в методе init):

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

Есть также сообщения для хранения других типов переменных, таких как setInteger, setFloat и т. Д.

Другие вопросы по тегам