해당 셀에 축소판 이미지를 채우는 UITableView
이 있습니다. 제 경우에는 축소판이 서버에서 다운로드됩니다. 다음과 같이 내 코드는 다음과 같습니다UITableViewCell에 축소판 그림 다운로드
if (![self thumbnailExists])
{
self.thumbnailImageView.image = nil;
[self.activityIndicatorView startAnimating];
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:
^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.thumbnailURL]];
UIImage *image = [UIImage imageWithData:data];
[[NSOperationQueue mainQueue] addOperationWithBlock:
^{
SubmenuScrollViewTableViewCell *submenuScrollViewTableViewCell = (SubmenuScrollViewTableViewCell*)[(UITableView*)self.superview cellForRowAtIndexPath:self.indexPath];
[submenuScrollViewTableViewCell.activityIndicatorView stopAnimating];
submenuScrollViewTableViewCell.thumbnailImageView.image = image;
}];
}];
[self.operationQueue addOperation:operation];
[self.operationQueues setObject:operation forKey:[self title]];
}
이 코드는 큰 WWDC2012 프레젠테이션을 기반으로 "iOS에서 동시 사용자 인터페이스를 구축". 프레젠테이션의 코드와 코드의 주요 차이점은 웹에서 검색된 데이터로 셀을 채우는 것입니다.
그것은 대부분 잘 작동하지만 문제는 내가 정말로 빠르게 스크롤하면 셀 중 하나가 틀린 썸네일로 나타날 수 있습니다 (일반적으로 셀이 썸네일이 속한 셀). 이 코드는 layoutSubviews
오버라이드 된 메소드 UITableViewCell
에서 실행 중임을 언급해야합니다.
누구든지이 코드의 결함을 발견 할 수 있습니까?
SubmenuScrollViewTableViewCell *submenuScrollViewTableViewCell = (SubmenuScrollViewTableViewCell*)[(UITableView*)self.superview cellForRowAtIndexPath:self.indexPath];
당신이 호출 할 때 인덱스 경로에있는 셀을 잡는이 인덱스 경로 경우에 무엇이든 셀에 배치됩니다
이것을 알아 냈습니까? – AdamG
@AdamG - 그래, 아래에서 보았습니다. 도움을 주셔서 감사합니다. –