2015-07-04 3 views
3

У меня есть два диспетчера представлений: MainController и OptionsController. OptionsController можно получить с помощью кнопки MainController. В OptionsController есть некоторые значения, которые я могу сохранить с помощью NSUserDefaults. Эти значения необходимы в MainController. Если я изменю эти значения в OptionsController, когда вернусь в MainController, они не изменятся, но если я снова запустил MainController, эти значения были изменены правильно. Похоже, что когда MainController снова активируется, после выхода из OptionsController viewDidLoad больше не создается. Как я могу обновить данные в MainController, пожалуйста?Обновление данных NSUserDefaults в одном ViewController, измененном в другом ViewController

+2

Ответ дает ответ, который вам нужен. Просто найдите, как использовать NSNotification. Вы должны проголосовать за ответ, если это будет полезно. Это побудит других помочь вам в будущем. –

+0

Вы правы, и оба ответа дали мне несколько хороших идей, но, к сожалению, я не могу голосовать, потому что мои очки репутации меньше 15. – Paolovip

+1

OK - Я просто предал вас за предел. Проголосуйте. BTW, принимающий ответ, который наиболее полезен, даст вам два дополнительных момента, поэтому нажмите зеленую галочку, если один из ответов очень полезен. Поиск SO для использования NSNotifications, и вы на своем пути. –

ответ

4

Как пишет rounak, viewDidLoad вызывается только один раз в жизни контроллера вида. Если у вас есть код, который вы хотите исполнять каждый раз, когда отображается контроллер вида, поместите его в viewWillAppear.

NSUserDefaults - довольно тяжелый способ передачи информации между объектами в памяти (она записывает на диск). Если вам не нужна настойчивость между прогонами, один из других вариантов, которые он предложил, будет лучше. Я бы предложил шаблон делегата или блок завершения.

+0

Мне также нужны данные о сохранении. Я буду искать ваши показания. спасибо – Paolovip

3

viewDidLoad вызывается только один раз для контроллера вида. Вы можете использовать NSNotification, KVO, блоки или что-то вроде шаблона делегирования, чтобы получить обратный вызов в вашем MainController всякий раз, когда значение изменяется внутри OptionsController.

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

+0

Хорошо, спасибо, я проверю NSNotification, KVO и блокирует ... – Paolovip

Смежные вопросы