从presentModalViewController / dismissModalViewControllerAnimated返回后调用的内容:

时间:2011-01-02 13:38:17

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

显示我使用的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];
   }
}

有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

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

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

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