- (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