这样做似乎要快得多:
- (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会减慢应用程序的速度并且似乎没必要。
答案 0 :(得分: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];
}