为什么设置UITableViewCell
的颜色在willDisplayCell
但不在cellForRowAtIndexPath
中?
注意:
[cell setBackgroundColor:[UIColor yellowColor]];
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
,答案 0 :(得分:7)
UITableViewCell
的doco表示您需要在willDisplayCell:
中执行此操作(摘自下面的UITableViewCell
类参考)。我怀疑因为表格单元格有一个内容视图和各种其他组件似乎由UIKit
“管理”,所以它在cellForRowAtIndexPath
中设置之后用背景颜色做自己的事情。您还可以使用表格视图单元格的“backgroundView”属性来控制其背景。
文档摘录:
注意:如果要更改单元格的背景颜色(通过backgroundColor
声明的UIView
属性设置单元格的背景颜色),则必须在委托的tableView:willDisplayCell:forRowAtIndexPath:
方法,而不是数据源的tableView:cellForRowAtIndexPath:
。组样式表视图中单元格背景颜色的更改在iOS 3.0中具有与以前版本的操作系统不同的效果。它现在会影响圆角矩形内的区域,而不是它外面的区域。
答案 1 :(得分:0)
简单来说,cellForRowAtIndex
将定义单元格中UIObject
的行为(如标签,按钮,视图)。
(即背景颜色,字体样式,fontcolor)。
如果您想更改单元格的外观,则只能在willDisplayCell:forRowAtIndexPath: