簡體   English   中英

每次滾動tableview時,單元格中的圖像都會改變

[英]Images in cell are changing everytime when tableview is scrolled

在下面的代碼中,每當我滾動表格視圖時,每個單元格中的圖像都會發生變化,這是不應該發生的。 請幫忙。 提前致謝。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UserDetails *userDetails = [arrUserDetails objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"CustomCell";
__weak TableViewCell *cell = (TableViewCell *)[_tableViewUsername dequeueReusableCellWithIdentifier:CellIdentifier];
cell.tag = indexPath.row;
cell.userName.text = userDetails.userName;
   [self.operationQueue addOperationWithBlock: ^ {  
    NSURL *aURL = [NSURL URLWithString:userDetails.userImageURL];
    NSError *error = nil;
    NSData *data = [NSData dataWithContentsOfURL:aURL options:nil error:&error];
    UIImage *image = nil;
    if (cell.tag == indexPath.row)
    {
        image = [UIImage imageWithData:data];
        [[NSOperationQueue mainQueue] addOperationWithBlock: ^ {
            cell.customImageView.image = image;
            cell.customImageView.contentMode = UIViewContentModeScaleToFill;
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }];
    }
}];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UserDetails *userDetails = [arrUserDetails objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"CustomCell";
__weak TableViewCell *cell = (TableViewCell *)[_tableViewUsername dequeueReusableCellWithIdentifier:CellIdentifier];
cell.tag = indexPath.row;
cell.userName.text = userDetails.userName;

//Add Default placeholder
cell.customImageView.image = [UIImage imageNamed:@"Default.png"];

   [self.operationQueue addOperationWithBlock: ^ {  
    NSURL *aURL = [NSURL URLWithString:userDetails.userImageURL];
    NSError *error = nil;
    NSData *data = [NSData dataWithContentsOfURL:aURL options:nil error:&error];
    UIImage *image = nil;
    if (cell.tag == indexPath.row)
    {
        image = [UIImage imageWithData:data];
        [[NSOperationQueue mainQueue] addOperationWithBlock: ^ {
            cell.customImageView.image = image;
            cell.customImageView.contentMode = UIViewContentModeScaleToFill;
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }];
    }
}];

從網址加載圖片之前,為圖片添加默認占位符,因為單元格被重用,它會獲取前一張圖片

您可以使用SDWebImage.framework加載圖像

[cell.customImageView sd_setImageWithURL:[NSURL URLWithString:userDetails.userImageURL] placeholderImage:nil options:SDWebImageCacheMemoryOnly completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
      if (image) {
          [cell.customImageView setImage:image];
      }
}];

您可以為此使用Afnetworking類。

只需導入#import“ UIImageView + AFNetworking.h”

並使用此行:

[cell.imgProfile setImageWithURL:imgurl placeholderImage:[UIImage imageNamed:@“”]]];

Imgurl是您從響應中獲得的圖片網址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM