模态视图被解除时的方法

Jac*_*ack 16 iphone model-view-controller

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

谢谢

Gro*_*hal 24

建议的方法是使用模态视图控制器中的委托回到打开视图的视图控制器.查看官方文档以获取示例.

这是推荐方式的原因是最初启动模式的ViewController也可以控制解除它.

与使用viewWillDisappear相比,这样做非常简单并且更优雅 - 因为还有其他原因导致视图消失!

在模态ViewController上创建一个协议 - xViewControllerDelegate

@protocol xViewControllerDelegate

    - (void) modalDialogFinished;

@end
Run Code Online (Sandbox Code Playgroud)

然后<xViewControllerDelegate>在您定义父视图控制器时使用父实现委托.

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

请记住id<xViewControllerDelegate>在初始化代码中传入模态视图控制器并将其作为字段存储在对象上.

当你想要取消你的模态视图时,你只需要引用delegate.modalDialogFinished.

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

更新::

以下是关于如何为模态视图控制器执行此操作的Apple官方文档:

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


Jas*_*ien 21

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

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

就像是:

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.parentViewController doSomething];
}
Run Code Online (Sandbox Code Playgroud)

如果您的父视图控制器是一个表视图控制器,那么您应该可以调用[self.parentViewController.tableView reloadData];以执行您要实现的操作.

  • 为什么我得到这个答案的downvote? (2认同)