파일 이름을 표시하는 셀이 채워진 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'을 설정합니까? –
@ BjörnKaiser 나는 일반적으로'- (UITableViewCell *) tableView : (UITableView *) tableView cellForRowAtIndexPath : (NSIndexPath *) indexPath'에 셀을 설정한다. 그러나, 위의 메소드에서'cell'을 얻는 방법을 보여주기 위해 지금 코드를 바꿀 것입니다. –
다운로드 여부를 결정하는 코드가 맞는지 이미 확인했다고 가정합니다. –