Во-первых, вы никогда не должны звонить 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];
}