ファイル名を表示するセルで満たされた UITableView があり、セルはファイルのアップロード/ダウンロードの進行状況も示しています。ファイルを移動すると、対応するセルのUIActivityIndicatorView
アクセサリ ビューに が表示されます。UIActivityIndicatorView
セットアップが完了し、準備が整いましたが、viewDidLoad
複数のセルのアクセサリ ビューとして設定しようとすると、1 つのセルにしか表示されません。
-(void)viewDidLoad {
[super viewDidLoad];
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activityIndicator startAnimating];
}
//...code that detects file changes and calls fileChange
-(void)fileChange {
for (int i = 0; i < [self.cloudNames count]; i++) {
//detect whether file name in array is uploading, downloading, or doing nothing
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (downloading) {
cell.accessoryView = activityIndicator;
//other changes here specific to downloads
} else if (uploading) {
cell.accessoryView = activityIndicator;
//other changes here specific to uploads
} else {
cell.accessoryView = nil;
}
}
}
先ほど言ったように、アクティビティ インジケーターは、表示すべきセルが複数ある場合でも、1 つのセルにしか表示されません。
このメソッドはアップロード/ダウンロード中に何度も呼び出されるため、(機能していても) メソッドUIActivityIndicatorView
にを設定したくありません。fileChange
メソッドが呼び出され、そこにアクティビティ インジケーターが設定されている場合、メソッドが呼び出されたときにすべてのテーブル ビュー セルでアクティビティ インジケーターがリセットされ、アニメーションがぎこちなく滑らかでなくなり、大量のメモリの問題が発生します。
何をすべきかのアイデアはありますか?ありがとう。