Обновить вид после возобновления работы приложения из многозадачности - PullRequest
2 голосов
/ 24 марта 2012

У меня есть tabBarController, содержащий три вкладки.Одна вкладка - это вкладка настроек, она имеет три UISwtch, которые содержатся в UITableView, и хранит данные в [NSUserDefaults standardUserDefaults].Я тестирую все, что мог сделать пользователь, и обнаружил небольшую проблему.Когда вкладка настроек находится на переднем плане, и я выхожу из приложения, введите основные настройки телефона, измените настройки для моего приложения, выйдите из настроек и перезапустите мое приложение, вкладка настроек все еще находится на переднем плане, но тумблеры неотразить изменения, сделанные на предыдущем этапе.Если я переключаюсь на другую вкладку, а затем возвращаюсь на вкладку настроек, изменения теперь отражаются.

Я перепробовал все, viewWillAppear, viewDidAppear, [theTtableView reloadData], ничего не работает.Странно то, что точно такие же функции вызываются, когда она возобновляется и вкладка настроек находится на переднем плане, например, когда на переднем плане находится другая вкладка, я выбираю вкладку настроек.Я просто не могу заставить его обновиться, хотя viewDidAppear и viewWillAppear оба вызываются на контроллере настроек.

Я знаю, что маловероятно, что пользователь будет во вкладке настроек приложения, затем выйдет и перейдет на вкладку настроек телефона, чтобы внести изменения, затем вернется в приложение, но это сводит меня с ума, и мне нужночтобы исправить это.

Я перепробовал каждое предложение, которое смог найти здесь, но до сих пор не могу заставить его работать.

Есть идеи?

Спасибо

Ответы [ 2 ]

11 голосов
/ 24 марта 2012

Назовите это

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshViews) name:UIApplicationWillEnterForegroundNotification object:nil];

при инициализации контроллера вашего представления (замените refreshViews на селектор метода, которым вы обновляете свои переключатели, чтобы отразить фактические значения в).Не забудьте [[NSNotificationCenter defaultCenter] removeObserver:self] в dealloc.

. Вы также можете зарегистрироваться для получения уведомлений в viewDidLoad или viewWillAppear и отменить регистрацию в viewDidUnload или viewWillDisapper соответственно.

0 голосов
/ 24 марта 2012

Вы пытались вставить код обновления в applicationWillResumeActive или applicationWillEnterForeground в своем UIApplicationDelegate?

...