Настройки не обновляются на iOS 4

У меня есть пакет настроек с некоторой настройкой пользовательского интерфейса,

дело в том, что если приложение закрыто и я меняю настройку, когда я открываю его, оно обновляется. Но в iOS 4, если приложение находится в фоновом режиме и я меняю настройку, оно вообще не обновляется, пока я не закрою приложение и не открою его снова.

Мой код чтения NSUSerDefaults выглядит примерно так:

NSUserDefaults *savedData = [NSUserDefaults standardUserDefaults];
NSInteger size = [savedData integerForKey:@"size"];

находится в viewWillAppear, поскольку этот метод следует вызывать каждый раз при загрузке представления, поскольку оно запускается или исходит из фона.

Там много кода NSUserDefaults, но все, что отсутствует, это [синхронизация сохраненных данных]; и это, по-видимому, предназначено для обновления значений по умолчанию после того, как вы измените их в своем приложении, а не наоборот (изменяясь в настройках, пытаясь их получить)

Что мне здесь не хватает?


person ferostar    schedule 28.03.2011    source источник


Ответы (1)


viewWillAppear не вызывается, когда приложение выходит из фона, несмотря на то, что вид появится...

Таким образом, вы должны вызывать свои методы обновления из applicationWillEnterForeground в своем делегате приложения.

См. Почему viewWillAppear не вызывается, когда приложение возвращается из фона?

person mvds    schedule 28.03.2011
comment
Вау, не ожидал этого. Спасибо за ответ и за ссылку, как только я вернусь домой, я попробую и предоставлю ответ как решенный. - person ferostar; 28.03.2011
comment
Обычно есть два способа: либо через IB, пометив ваше свойство как IBOutlet и подключив его соответствующим образом, либо в коде после того, как вы его выделили/инициализировали. Это действительно зависит от ситуации. Но я думаю, что это другой вопрос, чем проблема viewWillAppear. - person mvds; 29.03.2011
comment
Извините за беспокойство, я удалил комментарий как можно скорее, потому что нашел способ сделать это, а вы ОЧЕНЬ быстро отвечаете! Теперь это работает, только представление загружается с предыдущим состоянием, а затем меняется на новое. Это невозможно преодолеть? - person ferostar; 29.03.2011