我试图为子类UITableViewCell
设置背景颜色。我知道通常我应该使用tableView:willDisplayCell:forRowAtIndexPath:
。但是,我有一些逻辑可以自定义UITableViewCell
中tableView:cellForRowAtIndexPath:
的几个方面,我想根据该逻辑设置单元格的背景颜色。我是否必须复制tableView:cellForRowAtIndexPath:
tableView:willDisplayCell:forRowAtIndexPath:
中的所有条件以设置背景颜色?这种代码重复似乎很浪费,而且可能是不明智的。
我能想到的最佳解决方案是将一个UIColor属性添加到UITableViewCell
子类,根据那里的条件在tableView:cellForRowAtIndexPath:
中设置它,并且只需tableView:willDisplayCell:forRowAtIndexPath:
设置单元格& #39;背景颜色为其自身的颜色属性。这是处理这种情况的正确方法吗?它似乎有点笨重,但我无法想到更好的东西。
答案 0 :(得分:1)
您可以创建返回适当颜色的函数,并按照
进行相应设置-(UIColor*)getColorForIndexPath:(NSIndexPath*){
UIColor *cellColor=nil;
//Do whatever your logic is for finding appropriate color assign to cellColor
return cellColor;
}
现在使用此功能将colorcolor设置为,因此您只需修改一个地方即可在两个地方生效。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
.... //Your code for cell
cell.backgroundColor = [self getColorForIndexPath:indexPath];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
.... //Your code for cell
cell.backgroundColor = [self getColorForIndexPath:indexPath];
}
注意:如果您只放置在任何委托方法中,这仍然有效,因此无需在2个地方调用。