сохранение состояния UIButton iOS

#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. Вы проверили мой ответ .. 🙂