Как сохранить скрытое состояние кнопки как 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 и т. Д.