简体   繁体   English

tableviewcell中的图像不会立即显示

[英]Image in tableviewcell not appearing immediately

When the tableview appears, at first there are no images. 当桌面视图出现时,首先没有图像。 But when I drag it, the images in the tableviewcells will appear. 但是当我拖动它时,tableviewcells中的图像将会出现。 I am using a custom tableviewcell class. 我正在使用自定义tableviewcell类。

- (UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UserCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell == nil) {
        cell = [[UserCell  alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
     NSLog(@"%d",indexPath.row);
    [cell setUser:_chatContent[indexPath.row]];
    [cell initUI];
    return cell;
}

This is my custom cell class: 这是我的自定义单元类:

- (void)awakeFromNib {
    [super awakeFromNib];
}
-(BOOL)initUI{
    BOOL isSuccess;
    self.userImageView =  self.user.userImageView;
    UIView *superView = self.contentView;
    [superView addSubview:self.userImageView];
    [self.userImageView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(superView.mas_top).with.mas_offset(8);
        make.bottom.equalTo(superView.mas_bottom).with.mas_offset(-8);
        make.left.equalTo(superView.mas_left).with.mas_offset(8);
        make.width.equalTo(superView.mas_height).with.mas_offset(-16);
    }];
    self.userImageView.layer.cornerRadius = self.userImageView.frame.size.width/2;
    self.imageView.clipsToBounds = YES;
    isSuccess = YES;
    return isSuccess;
}

Finally, this is my imageview code: 最后,这是我的imageview代码:

User *user = _chatContent[i];
NSString *fileName = [NSString stringWithFormat:@"%d",i];
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"jpg"];
user.userImageView = [[UIImageView alloc] initWithImage: [UIImage imageNamed:filePath]];

Set the cell's imageView.image to nil before setting image for imageView because tableView reloads cells every time it is scrolled. 在为imageView设置图像之前将单元格的imageView.image设置为nil ,因为tableView每次滚动时都会重新加载单元格。 After setting imageView.image call setNeedsDisplay and reloadInputViews of UITableViewCell to set image immediately. 设置完成后imageView.image调用setNeedsDisplayreloadInputViews的UITableViewCell的立即设置图像。

[cell reloadInputViews];                
[cell setNeedsDisplay];

Hope it helps. 希望能帮助到你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM