我有一个适用于iPhone 3.1.3的实用程序。我的主视图加载很好。我翻到实用程序的翻转视图并更改一些设置。当设置发生变化时,如何在主视图中调用我目前在viewDidLoad
中获得的代码来刷新它?
我是否创建了一个公共方法并从flipside视图的viewDidUnload方法中调用它?我是否直接致电viewDidLoad
?最好的方法是什么?
答案 0 :(得分:1)
首先,您不应该直接致电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];
}