我有一个具有容器视图的viewController。在容器视图中,我有一个包含静态单元格的tableView。每个细胞都有一个披露指标。这一切都是在IB中创建的。父viewController嵌入在navigationController中。
每个单元格都会推送一个加载mapView的新视图控制器。每个映射都解析并加载.kml文件。 .kml文件非常庞大,需要一分钟(或更长时间)才能加载。
我使用以下代码在每个单元格的附件视图中放置了activityIndicator:
- (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];}
但那没用。有什么建议吗?
答案 0 :(得分:1)
在表格视图控制器的reloadData
中调用viewWillAppear
只要在cellForRowAtIndexPath
方法中,您就可以通过调用UIActivityIndicatorView
来设置stopAnimating
的状态accesstoryView
任何不应该旋转的单元格的方法(或简单地从视图中删除它)。
您需要通过prepareForSegue
属性引用活动指示器。
在您的数据中,您可以存储一个属性,该属性指示指标是否仍应为该地图旋转并正确设置。
另一种方法是在显示地图视图之前停止{{1}}中的活动指示。