从实用程序应用程序的FlipSideView返回时强制重新加载View

时间:2010-05-31 15:45:48

标签: iphone objective-c cocoa

我有一个适用于iPhone 3.1.3的实用程序。我的主视图加载很好。我翻到实用程序的翻转视图并更改一些设置。当设置发生变化时,如何在主视图中调用我目前在viewDidLoad中获得的代码来刷新它?

我是否创建了一个公共方法并从flipside视图的viewDidUnload方法中调用它?我是否直接致电viewDidLoad?最好的方法是什么?

1 个答案:

答案 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];
}