9

我从http://news.selectstartstudios.com/beveled-uitableviewcells/在 Beveled UITableViewCells 上找到了这篇文章。我正在使用该技术来减小单元格的宽度,并且在大多数情况下效果很好。

但是,我有一个小问题。有时单元格未正确重绘。例如,即使一个单元格应该是“中间”单元格,它也被绘制为“顶部”单元格:yfrog.com/f1screenshot20100424at100

我怎样才能解决这个问题?

我尝试通过 [cell setNeedsDisplay]、[cell setNeedsLayout]、[tableView reloadRowAtIndexPath:withAnimation:]、[cell drawrect:] 和 [tableView drawRect:atIndexPath] 强制单元格重绘。我没主意了。

再次感谢!

4

2 回答 2

25

原来我需要在 cellForRowAtIndexpath 的末尾调用 [cell.backgroundView setNeedsDisplay]。

于 2010-04-25T07:33:19.310 回答
1

遇到同样的问题,因为我的一些人cellForRowAtIndexpath在后台线程中。这种情况下的解决方案是强制任何直接的单元格子视图更新到主线程中:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    if (cell.tag == indexPath.row){
       // data retrieval that may block main thread and cause temp freeze...
       dispatch_async(dispatch_get_main_queue(), ^{
          // update any cell subviews here
       }
    }
});
于 2016-04-25T00:29:15.840 回答