【问题标题】:Call method from Modal View Controller从模态视图控制器调用方法
【发布时间】:2009-11-04 18:53:29
【问题描述】:

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

我知道如果我在 -viewDidAppear 中执行此操作会有效,但我只希望它在模式视图关闭时发生,而不是每次都发生。

【问题讨论】:

    标签: iphone view modal-dialog


    【解决方案1】:

    正如您在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
    }
    

    作为附加评论,我链接的指南建议您不应该从模式本身而是从打开它的控制器中关闭模式。在示例中,他们创建的委托协议略有不同,因此它有方法让原始控制器了解模态控制器所做的操作,并能够决定何时关闭它。

    【讨论】:

    【解决方案2】:

    查看 View Controller Programming Guide,特别是 section on dismissing a modal view

    OriginalViewController 应该有一个协议方法,当它完成时由 ModalViewController 调用。 OriginalViewControllers 应该负责关闭模态视图并对其自身执行所需的任何任务,例如刷新自身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多