#ios #nsuserdefaults
#iOS #nsuserdefaults
Вопрос:
У меня есть UIButton
- (IBAction)checkButton:(id)sender {
if (!checked) {
[checkBoxButton setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
checked = YES;
} else if (checked) {
[checkBoxButton setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
checked = NO;
}
}
Я хочу сохранить пользовательский ввод, независимо от того, установлена кнопка или нет, даже после закрытия приложения. Кто-нибудь может помочь мне с кодами? Я не знаю кодов для использования NSUserDefaults для сохранения состояния BOOL.
Комментарии:
1. Использовать выбранное свойство
2. Вы хотите сохранить состояние в табличном представлении
3. да! Состояние UIButton после закрытия приложения внутри табличного представления.
4. Затем вам желательно обновить источник данных вашего tableview для сохранения состояний и сохранить его на диск или
NSUserDefaults
с помощьюNSKeyedArchiver
: benreimers.net.au/blog /…
Ответ №1:
Используйте его следующим образом:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool: checked forKey:@"Status"];
[defaults synchronize];
Чтобы получить его,
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL state = [defaults boolForKey:@"Status"];
Комментарии:
1. Первая часть поможет вам сохранить состояние (т. Е. В вашем случае переменная проверена), даже когда приложение закрыто. Вторая часть поможет получить эту сохраненную переменную. Вы должны использовать его для установки начального статуса вашей кнопки.
Ответ №2:
Установите изображения для обоих Normal
и selected
состояния кнопки как
[checkBoxButton setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateSelected];
[checkBoxButton setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
и в IBAction
наборе
- (IBAction)checkButton:(id)sender {
if (!checked) {
[checkBoxButton setSelected:NO];
checked = YES;
} else if (checked) {
[checkBoxButton setSelected:YES];
checked = NO;
}
}
Ответ №3:
Вот пример:
if ([[NSUserDefaults standardUserDefaults] boolForKey:hasLaunchedOnceKey])
{
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:hasLaunchedOnceKey];
[[NSUserDefaults standardUserDefaults] synchronize]; //Saves the data
}
Где у меня есть:
static NSString *hasLaunchedOnceKey = @"HasLaunchedOnce";
Объявлено перед оператором @implementation .
Смотрите Это для подробного руководства.
** Примечание: вам не нужно ничего объявлять в каких-либо файлах plist afaik. Вы можете просто проверить и установить эти ключи, и они будут созданы динамически, если они не существуют. В любом случае это работает для меня.
Счастливого программирования!
Ответ №4:
Мой путь слишком прост.. Вам не нужно принимать какие-либо другие переменные. При инициализации установите нулевой тег кнопки и после этого используйте это.
- (IBAction)checkButton : (id)sender {
if ([sender tag] == 0) {
[sender setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
[sender setTag:1];
} else {
[sender setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
[sender setTag:0];
}
}
Спасибо и приветствия.. Может быть полезным..
Комментарии:
1. Вы проверили мой ответ .. 🙂