1

我有一个具有容器视图的 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];}

这似乎按预期工作。

查看地图后,我触摸导航控制器提供的“返回”按钮,然后将地图从堆栈中弹出。我的嵌入式 tableView 再次可见,活动指示器仍在旋转。我不能让它停下来。

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

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

但这没有用。有什么建议么?

4

1 回答 1

1

只要在方法中调用reloadData表格视图控制器就可以工作,您通过调用它的方法(或简单地将其从视图中删除)为任何不应该旋转的单元格设置状态。viewWillAppearcellForRowAtIndexPathUIActivityIndicatorViewstopAnimating

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

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

另一种方法是在prepareForSegue显示地图视图之前停止活动指示器。

于 2013-08-19T17:15:24.347 回答