从详细信息ViewController返回时,在嵌入式TableView单元格中停止activityIndi​​cator

时间:2013-08-19 16:57:12

标签: ios

我有一个具有容器视图的viewController。在容器视图中,我有一个包含静态单元格的tableView。每个细胞都有一个披露指标。这一切都是在IB中创建的。父viewController嵌入在navigationController中。

每个单元格都会推送一个加载mapView的新视图控制器。每个映射都解析并加载.kml文件。 .kml文件非常庞大,需要一分钟(或更长时间)才能加载。

我使用以下代码在每个单元格的附件视图中放置了activityIndi​​cator:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

UIActivityIndicatorView *activityView =
[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activityView startAnimating];
[cell setAccessoryView:activityView];

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];}

这似乎按预期工作。

查看地图后,我触摸navigationController提供的“后退”按钮,然后将地图弹出堆栈。我的嵌入式tableView再次可见,活动指示器仍在旋转。我无法阻止它。

我最好的尝试是在我的tableView的实现文件中:

- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[self tableView] reloadData];}

但那没用。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在表格视图控制器的reloadData中调用viewWillAppear只要在cellForRowAtIndexPath方法中,您就可以通过调用UIActivityIndicatorView来设置stopAnimating的状态accesstoryView任何不应该旋转的单元格的方法(或简单地从视图中删除它)。

您需要通过prepareForSegue属性引用活动指示器。

在您的数据中,您可以存储一个属性,该属性指示指标是否仍应为该地图旋转并正确设置。

另一种方法是在显示地图视图之前停止{{1}}中的活动指示。