我有一個UITableView填充了顯示文件名的單元格,單元格還指示文件的上載/下載進度。當文件正在移動時,其相應的單元應在其附件視圖中顯示UIActivityIndicatorView
。我有一個UIActivityIndicatorView
設置,並準備進入viewDidLoad
,,但是當我試圖將其設置爲多個單元的附件視圖時,它僅在一個單元中顯示。活動指標只在一個單元格中顯示
-(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;
}
}
}
正如我所說的,活動指示燈只顯示一個細胞即使有多個單元格中要顯示它。
我不想在fileChange
方法中設置UIActivityIndicatorView
方法(即使它有效),因爲在上載/下載過程中多次調用此方法。如果方法被調用並且在那裏設置了活動指示符,那麼當調用該方法時,活動指示符將重置在所有表視圖單元格中,導致動畫出現毛刺和不平滑,並導致巨大的內存問題。
任何想法該怎麼做?謝謝。
你在哪裏設置'cell'? – 2012-07-07 19:40:09
@BjörnKaiser我通常在' - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath'中設置單元格。但是,我現在將更改我的代碼,以向您展示如何在上述方法中獲取'cell'。 – 2012-07-07 19:42:13
我假設你已經檢查過是否確定下載的代碼是否正確? – 2012-07-07 19:46:51