Tôi biết điều này đã được hỏi nhiều lần nhưng xin vui lòng chịu với tôi như tôi đã cố gắng cho một ngày có thể để tìm một giải pháp.UITableView dequeued tế bào tải lại hình ảnh cũ
Tôi có trình phân tích cú pháp rss, chế độ xem bảng với: văn bản, chi tiết và hình ảnh được đặt thành AccessoryDisclosureIndicator.view.
Hình ảnh tải tuyệt vời với tính năng GCD đơn giản: di chuyển nhanh cho hàng trăm kết quả. KHÔNG lag, KHÔNG có lỗi nếu tôi có kết nối tốt.
Vấn đề là, trong giây lát - chúng nhấp nháy khi tải vì ô đang được sử dụng lại. Ngoài ra nếu kết nối kém, đôi khi nó sẽ rời khỏi hình ảnh lộn xộn NHƯNG văn bản/chi tiết là chính xác, chỉ có hình ảnh cũ ... Vì vậy, hãy để tôi lặp lại, các văn bản/chi tiết cập nhật tốt và KHÔNG BAO GIỜ được xếp hàng lại sai, chỉ cần hình ảnh đôi khi hiếm khi được xếp hàng sai trên các kết nối xấu/thu giữ-cuộn qua lại nhanh chóng.
Câu hỏi của tôi, ai đó có thể giúp tôi cache/gắn thẻ cell.accs.views không? Tôi đã thử đặt cellID nhưng gặp sự cố khi triển khai. Mã dưới đây của tôi hoạt động tốt nếu kết nối không bao giờ chậm lại, chỉ là một nhấp nháy nhẹ khi xếp hàng lại một ô mà tôi không quan tâm.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
[cell.textLabel setNumberOfLines:3];
cell.textLabel.font = [UIFont boldSystemFontOfSize:14.0];
[cell.detailTextLabel setNumberOfLines:3];
cell.detailTextLabel.font = [UIFont systemFontOfSize:12.0];
cell.detailTextLabel.textColor = [UIColor blackColor];
}
RSSItem * rssItem = (RSSItem *)(_rssParser.rssItems)[indexPath.row];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
//This is what you will load lazily
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:rssItem.imageURL]];
dispatch_sync(dispatch_get_main_queue(), ^{
UIImageView *accImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithData:data ]];
[accImageView setFrame:CGRectMake(0, 0, accImageView.image.size.width, 92)];
cell.accessoryView = accImageView;
//[cell setNeedsLayout];//not needed
});
});
[cell.textLabel setText:rssItem.title];
[cell.detailTextLabel setText:rssItem.summary];
return cell;}
vấn đề của tôi là rõ ràng sâu hơn, cảm ơn bạn tho – JoshP