2009-11-04 82 views
1

我有一个视图控制器,它在点击某个按钮时呈现模态视图。在关闭模态视图并重新显示下面的原始视图时,我想要调用一个刷新方法。如何将方法从ModalViewController中调用OriginalViewController来自Modal View Controller的调用方法

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

回答

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 
} 

作为一个额外的评论,我挂了指导建议你应该驳回模式不是来自模式本身,而是从打开它的控制器。在这个例子中,他们创建的委托协议有点不同,所以它有原始控制器被告知模态控制器所做操作的方法,并且能够决定何时关闭它。

+0

链接断开,新的链接是:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html – Kalle 2010-09-09 13:56:26

+0

谢谢@卡勒,我刚刚更新了答案。 – pgb 2010-09-09 16:44:22

+1

什么是“RecipeAddDelegate”? “OriginalViewController”和“ModalViewController”在哪里去?谁有实际的* ANSWERS *原始问题的示例代码。实际的代码。 – Patricia 2010-10-16 02:51:59

2

查看视图控制器编程指南,特别是section on dismissing a modal view

当完成时,OriginalViewController应该有一个由ModalViewController调用的协议方法。应该是OriginalViewControllers负责解除模态视图并执行它自己需要的任何任务,例如刷新本身。

相关问题