从模态视图控制器调用方法

时间:2009-11-04 18:53:30

标签: iphone view modal-dialog

我有一个视图控制器,当点击某个按钮时会显示模态视图。在关闭模态视图并重新显示下面的原始视图时,我想要调用刷新方法。如何在refresh:的{​​{1}}中调用此OriginalViewController方法?

我知道如果我在ModalViewController中这样做会有效,但我只希望它在模态视图关闭时发生,而不是每次都发生。

2 个答案:

答案 0 :(得分:3)

正如您在View Controller Programming Guide中看到的,推荐的方法是使用委托。

你是如何做到的取决于你,但一个标准的方法是定义一个协议,如:

@protocol RecipeAddDelegate <NSObject>
- (void)modalViewControllerDismissed:(ModalViewController *)modalViewController;
@end

然后在你的OriginalViewController上你可以实现那个方法,并在模态视图控制器被解雇时采取行动:

- (void)modalViewControllerDismissed:(ModalViewController *)modalViewController {
   [self refresh]; // or anything you want to do
}

作为一个额外的评论,我链接的指南建议你应该从模态本身而不是从打开它的控制器中解除模态。在示例中,它们创建了一个稍有不同的委托协议,因此它有一些方法可以让原始控制器获知模态控制器所执行的操作,并能够决定何时关闭它。

答案 1 :(得分:2)

查看View Controller编程指南,特别是section on dismissing a modal view

OriginalViewController在完成后应该有ModalViewController调用的协议方法。 OriginalViewControllers应该解雇模态视图并执行它自己需要的任何任务,例如刷新本身。