Принудительная перезагрузка просмотра при возврате из FlipSideView служебного приложения - PullRequest
0 голосов
/ 31 мая 2010

У меня есть служебное приложение для iPhone 3.1.3. У меня мой основной вид загружается нормально. Я переворачиваю на экран приложения утилиты и меняю некоторые настройки. Как я могу вызвать код, который у меня есть в viewDidLoad на главном экране, чтобы обновить его после изменения настроек?

Могу ли я создать открытый метод и вызвать его из метода viewDidUnload в виде обратной стороны? Могу ли я позвонить viewDidLoad напрямую? Какой лучший способ сделать это?

1 Ответ

1 голос
/ 31 мая 2010

Во-первых, вы никогда не должны звонить viewDidLoad напрямую. Это, вероятно, не вызовет никаких проблем, но лучше оставить такой метод, который будет вызываться только базовым API. Просто переместите часть инициализации представления в новый метод, например configureViewForSettings или что-то в этом роде.

Лучший подход - использовать делегирование. Это наиболее удобно, когда вам нужно отправить какие-либо данные или уведомление в «родительское» представление. Создайте новый протокол MySettingsViewDelegate с помощью метода, подобного settingsViewChangedSettings:(MySettingsView *)settingsView. Затем на вашем контроллере настроек добавьте свойство id<MySettingsViewDelegate> delegate.

Когда настройки меняются, вызывайте метод делегата следующим образом:

[self.delegate settingsViewChangedSettings:self];

И в вашем главном контроллере представления, когда вы создаете / отображаете представление настроек, установите себя в качестве делегата

mySettingsView.delegate = self;
/* Display the settings view */

Тогда где-то:

- (void)settingsViewChangedSettings:(MySettingsView *)settingsView {
    /* Settings changed, refresh your view */
    [self configureViewForSettings];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...