代码之家  ›  专栏  ›  技术社区  ›  Jack

模式视图被取消时的方法

  •  16
  • Jack  · 技术社区  · 15 年前

    我已经创建了一个具有模态视图的应用程序,可以显示该视图,然后将其取消。是否有一种简单的方法来知道模式视图何时被取消?我想在模式视图被取消后重新加载表中的数据,但不知道最好的方法。

    谢谢

    2 回复  |  直到 13 年前
        1
  •  21
  •   Jasarien    15 年前

    uiviewController有一个名为 parentViewController . 如果视图控制器以模态显示,则 父视图控制器 属性指向显示模态视图控制器的视图控制器。

    在模态视图控制器中, viewWillDisappear: 您可以向 父视图控制器 执行任何你想要的行动,本质上。

    类似:

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

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

        2
  •  24
  •   Grouchal    14 年前

    建议的方法是使用模式视图控制器中的委托返回到打开视图的视图控制器。查看官方文档中的示例。

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

    这真的很简单,做和认为比使用视图更优雅将消失-因为还有其他原因,视图可以不模仿!

    在模式视图控制器上创建协议-XviewControllerDelegate

    @protocol xViewControllerDelegate
    
        - (void) modalDialogFinished;
    
    @end
    

    然后让您的父级使用 <xViewControllerDelegate> 定义父视图控制器时。

    您将被迫在父视图控制器中完成一个名为modaldialogfinished的方法,该方法可以处理disclose命令和刷新等。

    记住通过 id<xViewControllerDelegate> 在初始化代码中输入模态视图控制器,并将其存储为对象上的字段。

    当您想分解模式视图时,只需引用delegate.modalDialogFinished。

    如果这没有意义,那么我可以向您指出一些更好的示例代码——但我希望使用委托对您来说不是新的。

    更新::

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

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