經過加載Xib文件來建立UITableViewCell形成複用數據混亂問題方案

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    TradingAreaMyPraiseTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    //解決xib複用數據混亂問題
    if (nil == cell) {
        cell= (TradingAreaMyPraiseTableViewCell *)[[[NSBundle  mainBundle]  loadNibNamed:@"TradingAreaMyPraiseTableViewCell" owner:self options:nil]  lastObject];
    }else
  {
        while ([cell.contentView.subviews lastObject] != nil)
        {
            [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
        }
    }
   cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

每次建立cell以前,先進行比較一次,若是不存在再進行xib文件進行建立。性能優化

下面一種方法就比較暴力了,直接讓其中止複用(數據量少時能夠考慮用)ide

- (void)prepareForReuse {

    [super prepareForReuse];

    [_videoView reset];

}

 

UITableView在複用時形成cell分割線消失的問題解決方案性能

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
    CGContextFillRect(context, rect);
    //上分割線,
    //CGContextSetStrokeColorWithColor(context, COLORWHITE.CGColor);
    //CGContextStrokeRect(context, CGRectMake(5, -1, rect.size.width - 10, 1));
    CGColorRef color = [UIColor colorWithRed:236/255 green:236/255 blue:236/255 alpha:1].CGColor;
    //下分割線
    CGContextSetStrokeColorWithColor(context,color);
    CGContextStrokeRect(context,CGRectMake(10, rect.size.height-1, SCREEN_WIDTH-20,1));
}

重寫UITableViewCell的drawRect:方法優化


 

關於去除UITableViewCell複用機制的幾種方法spa

https://blog.csdn.net/henry19890519/article/details/45693079.net

UITableView性能優化,超實用code

https://blog.csdn.net/u011452278/article/details/60961350blog

相關文章
相關標籤/搜索