1

这样做似乎工作得更快:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    JHomeViewCell *cell = (JHomeViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[JHomeViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:CellIdentifier];

        cell.cellContent.thumbnailCache = self.thumbnailCache;
    }

    Entry *entry = [self.resultsController objectAtIndexPath:indexPath];
    if (cell.cellContent.entry != entry) {
        [cell.cellContent setNeedsDisplay];
    }
}

问题是当一个条目被编辑时,单元格不会改变。我可以检查单元格的所有元素,看看它们是否不同,但有更好的方法吗?每次出现单元格时调用 drawrect 都会减慢应用程序的速度,并且似乎没有必要。

4

1 回答 1

1

如果你想为你的 tableview 单元做自定义绘图,你必须子类化UITableViewCell(因为它看起来你已经完成了JHomeViewCell)。

将 drawRect 放在 JHomeViewCell 的实现中

@implementation JHomeviewCell

- (void)drawRect:(CGRect)rect
{
    [super drawRect];
    // Insert drawing code here
}

@end

此外,您不应该直接调用 drawRect 。您应该setNeedsDisplay改为调用,并且可能需要将 cellContent.entry 值设置为您从结果控制器中获得的条目。

Entry *entry = [self.resultsController objectAtIndexPath:indexPath];
if (cell.cellContent.entry != entry) {
    cell.cellContent.entry = entry;
    [cell setNeedsDisplay];
}
于 2012-04-29T15:08:00.050 回答