【问题标题】:what's called after returning from presentModalViewController / dismissModalViewControllerAnimated:从 presentModalViewController/dismissModalViewControllerAnimated 返回后调用什么:
【发布时间】:2011-01-02 13:38:17
【问题描述】:

从我使用的 mainView 中显示模态 uiview:

[self presentModalViewController:myController animated:YES];

并在 MyController 中关闭该视图:

[self dismissModalViewControllerAnimated:YES];

但我如何在 mainView 中知道模式已完成(重绘我的表格)? 目前,在启动模态视图后,我在 mainView 中将局部变量设置为 YES,并对 viewWillAppear 做出反应:

[self presentModalViewController:myController animated:YES];
_reloadTableData = YES;

-(void)viewWillAppear:(BOOL)animated {
   [super viewWillAppear:animated];
   if (_reloadTableData) {
     _reloadTableData = NO;
     [_tableView reloadData];
   }
}

有没有更好的方法?

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiview uikit


    【解决方案1】:

    一般来说,通过模态视图本身来关闭模态视图是不合适的。

    相反,您应该将 主视图 设置为模态视图的代理。当您的模态视图完成其任务时,它可以让其委托知道并让其委托解除它。这是 Objective-C 中非常常见的所谓委托设计模式。

    顺便说一句,您可能需要查阅一些代码示例以更好地理解此委托模式。我建议你看一下 Xcode 的默认模板之一 - Utility Application 模板。它内置了一个非常简洁明了的委托结构。

    【讨论】:

    • @middaparka: 不能同意更多:-)
    • diwup 谢谢。现在我的代码对另一个看起来很熟悉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多