在tableviewcell的contentview上的uiview上绘制字符串一次又一次地绘制相同的内容

时间:2014-08-02 16:08:31

标签: ios objective-c uitableview uiview

因为在UITableViewCell上使用三个标签减慢了tableview滚动性能,我尝试直接在UIView上绘制,我拖过原型单元格。虽然这显着改善了滚动性能,但这让我陷入了另一个问题。

实际上我正在绘制一个Feed的内容。在六或七个唯一行(对于20个记录)之后,行是重复的。它们从tableview顶部开始显示相同的内容。然而,当我点击那些重复的单元格时,内容就会变为原来的状态。

经过研究,我发现六到七个是屏幕上实际可见的行数。所以这应该是显示更新错误,但我不确定我是否应该解决此问题。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
    static NSString *cellIdentifier = @"newsCell";
    NewsCell *cell = (NewsCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (indexPath.row < feeds.count) {
        dict =  [feeds objectAtIndex:indexPath.row];
        [cell setNewsHeading:[dict objectForKey:@"title"] pubDate:[dict objectForKey:@"pubDate"] newsExcerpt:[dict objectForKey:@"attributedDescription"]];
    }
    dict = nil;
    return cell;
} 

-(void)setNewsHeading:(NSString *)newsHeading pubDate:(NSString *)pubDate newsExcerpt:(NSAttributedString *)newsExcerpt 
{
    self.newsView.newsHeading = newsHeading;
    self.newsView.pubDate = pubDate;
    self.newsView.newsExcerpt = newsExcerpt;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

// Return the number of rows in the section.
return [feeds count];
}

1 个答案:

答案 0 :(得分:0)

听起来这可能是一个缓存问题 - 您是否尝试重写单元子类中的prepareForReuse方法以将单元格内容重置为默认值?