2010-02-03 81 views
16

我已经创建了一个模态视图的应用程序,我可以显示然后解除。有一种简单的方法可以知道模态视图何时被解散?一旦模态视图被解散,我不想重新加载表格中的数据,也不知道这样做的最佳方式。当模态视图被解除时的方法

感谢

回答

21

的UIViewController有一个名为parentViewController属性。在以模态方式呈现视图控制器的情况下,parentViewController属性指向呈现模态视图控制器的视图控制器。

在您的模态视图控制器中,在viewWillDisappear:中,您可以发送消息至parentViewController以执行您所希望的任何操作。

喜欢的东西:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [self.parentViewController doSomething]; 
} 

如果父视图控制器是表视图控制器,那么你应该能够调用[self.parentViewController.tableView reloadData];做你想要达到的目标。

+0

非常感谢快速回复Jasarien,会给一个去稍后。 – Jack 2010-02-03 16:52:39

+2

为什么我得到这个答案downvote? – Jasarien 2010-02-04 09:44:53

+0

不是从我你没有 – Jack 2010-02-04 17:20:47

24

推荐的方法是使用模态视图控制器中的委托回到打开视图的视图控制器。查看官方文档的例子。

这是推荐的方式的原因是,最初启动模式的ViewController也将控制解除它。

与使用viewWillDisappear相比,它的操作确实很简单,并且考虑得更加优雅 - 因为视图可能会消失的其他原因!

你的模式视图控制器创建一个协议 - xViewControllerDelegate

@protocol xViewControllerDelegate 

    - (void) modalDialogFinished; 

@end 

然后,让使用<xViewControllerDelegate>你的父母实现委托时,您可以在定义父视图控制器。

你将被迫有一个在你的父视图控制器称为modalDialogFinished方法 - 它可以处理解雇命令和刷新等

记住的id<xViewControllerDelegate>通入模态视图控制器的初始化代码和存储它作为对象上的一个字段。

当你想要分散你的模态视图,那么你只需要引用delegate.modalDialogFinished。

如果这没有意义,那么我可以指点你一些更好的示例代码 - 但我希望使用代表对你来说并不陌生。

更新::

这里是如何做到这一点的一个模式视图控制器苹果官方文档:

http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

+0

这应该是最高的答案 – 2012-07-09 02:28:57

相关问题