Я провел тщательное исследование, но, похоже, не нашел ответа, который я ищу. Надеюсь, кто-то может помочь.Xcode Load NSUserDefaults в нескольких viewcontrollers
У меня есть несколько контроллеров в моем приложении, один из которых представляет собой «вариант», в котором пользователи могут изменять определенные настройки, такие как цвет фона, через сегментированный элемент управления. После нажатия кнопки пользователи нажимают кнопку, чтобы сохранить цвет предпочтений в NSUserDefaults. Это работает отлично, и в следующий раз, когда приложение откроется, правильный цвет все еще выбран. Но только в контроллере представления параметров.
Как я могу получить этот выбранный цвет фона для загрузки в других контроллерах представления? Кажется, я не запускаю его, внедряя его в ViewDidLoad из моих других представлений, как это было в представлении параметров (см. Ниже).
Мой код в options.m выглядит следующим образом:
- (IBAction)changeColor {
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
}
}
- (IBAction)saveDefaultColor {
int defaultColorInteger = colorControl.selectedSegmentIndex;
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:defaultColorInteger forKey:@"defaultColor"];
[userDefaults synchronize];
}
выше являются контроль и сохранить кнопку. В моей ViewDidLoad я включил следующие:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
int defaultColorInteger = [userDefaults integerForKey:@"defaultColor"];
[colorControl setSelectedSegmentIndex:defaultColorInteger];
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
Это работает точно так, как я хочу, но я не могу получить его работу в других моих взглядов. Может ли кто-нибудь помочь мне с тем, что мне кажется недостающим? Большое спасибо
- это код точно такой же, как в других представлениях? особенно ключевое имя –
сначала попробуйте NSLog your int, чтобы узнать, получаете ли вы правильное значение. во-вторых, попробуйте выполнить его @ viewWillApear или viewDidLayoutSubviews –
Я добавил следующее: NSLog (@ "default Цвет:% i", defaultColorInteger); Это действительно возвращает правильное значение, так как оно указывает цвет по умолчанию: 2 (например). Я скопировал точные строки с первого взгляда на второй, поэтому никаких опечаток не создано, но все же я не могу заставить его работать, также когда я использую метод viewWillAppear. Не могли бы вы привести мне пример того, как это реализовать? Спасибо – Harold