コンテナ ビューを持つ viewController があります。コンテナー ビューには、静的セルを含む tableView があります。各セルには開示インジケータがあります。これはすべて IB で作成されました。親の viewController は、navigationController に埋め込まれています。
各セルは、mapView をロードする新しいビュー コントローラーをプッシュします。各マップは、.kml ファイルを解析して読み込みます。.kml ファイルは巨大で、読み込みに 1 分 (またはそれ以上) かかります。
次のコードを使用して、各セルのアクセサリ ビューに 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];}
しかし、それはうまくいきませんでした。助言がありますか?