来自Modal View Controller的调用方法
问题描述:
我有一个视图控制器,它在点击某个按钮时呈现模态视图。在关闭模态视图并重新显示下面的原始视图时,我想要调用一个刷新方法。如何将方法从ModalViewController
中调用OriginalViewController
?来自Modal View Controller的调用方法
我知道这有效,如果我在-viewDidAppear
中这样做,但我只希望它发生在模态视图关闭时,而不是每一次。
答
正如您在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
}
作为一个额外的评论,我挂了指导建议你应该驳回模式不是来自模式本身,而是从打开它的控制器。在这个例子中,他们创建的委托协议有点不同,所以它有原始控制器被告知模态控制器所做操作的方法,并且能够决定何时关闭它。
答
查看视图控制器编程指南,特别是section on dismissing a modal view。
当完成时,OriginalViewController应该有一个由ModalViewController调用的协议方法。应该是OriginalViewControllers负责解除模态视图并执行它自己需要的任何任务,例如刷新本身。
链接断开,新的链接是:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html – Kalle 2010-09-09 13:56:26
谢谢@卡勒,我刚刚更新了答案。 – pgb 2010-09-09 16:44:22
什么是“RecipeAddDelegate”? “OriginalViewController”和“ModalViewController”在哪里去?谁有实际的* ANSWERS *原始问题的示例代码。实际的代码。 – Patricia 2010-10-16 02:51:59