如何根据位置修改空 UITableViewCell 对象的背景颜色?
Posted
技术标签:
【中文标题】如何根据位置修改空 UITableViewCell 对象的背景颜色?【英文标题】:How do I modify the background color of an empty UITableViewCell object based on it's position? 【发布时间】:2010-10-08 07:03:01 【问题描述】:我正在尝试编写代码来根据单元格在表格中的位置来修改单元格的背景颜色。虽然以下代码“有效”,但它只影响传递给它的单元格。空单元格不受影响。
- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
if(!indexPath.row%2)
cell.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
NSLog(@"Blue");
else
cell.backgroundColor = [UIColor whiteColor];
NSLog(@"white");
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
当列表中的项目很少时,我如何影响显示的其余单元格(如果为空)?
“空”单元格是指当您的数据源没有足够的数据来填充表格视图的整个视图时显示的占位符单元格。例如,如果您可以容纳 10 个单元格,但只有 5 个数据,那么您只会得到 5 个单元格来使用——接下来的 5 个单元格是空的,据我所知,无法访问。
【问题讨论】:
所以您希望表格单元格在蓝色和白色之间交替显示,无论单元格中是否有数据或它们是否为空? @Nabou 是的,这就是我想要的——从前。不过,从现在到那时,我实际上已经继续前进了。这个问题在这一点上是一个纯粹的理论问题。该应用程序很久以前就“消亡”了(整个开发它的公司也是如此) 【参考方案1】:我猜您只想更改“空”单元格的背景...然后您可以更改 UITableView 的 InterfaceBuilder 中的背景颜色。 但它会影响所有空单元格。
您还可以更改分隔符类型。
另外,看看这里:http://www.zenbrains.com/blog/en/2010/06/color-de-fondo-de-celdas-vacias/
编辑:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
// 7 depends on how many cell is shown
return ([source count] <= 7) ? 7 : [source count];
发件人:Show blank UITableViewCells in custom UITableView
【讨论】:
我想影响所有单元格——我希望显示的所有单元格在两种指示颜色之间来回反弹。唉,您显示的链接没有提供有用的来源;如果我尝试设置 contentView 的背景颜色,它不会正确更改整个单元格的颜色。右侧有一条颜色不变的“条带”。并且更改它以便我更改 selectedBackgroundView,或者只是 backgroundView,也没有做任何事情。 我编辑了我的答案:您需要自己添加额外的单元格,现在在 cellForRowAtIndexPath 中所有单元格都可以自定义。 问题是我没有那些额外的单元格(就源数据而言),这会导致其他意外结果。【参考方案2】:如果设置了单元格 contentView 的 backgroundColor 属性,它应该可以工作,而不是单元格的 backgroundColor:
cell.contentView.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
【讨论】:
我已经编辑了这个问题,以使这一点更清楚。 (虽然我很惊讶两年后才发现这个......)【参考方案3】:你应该实现
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
在您的委托中并根据需要初始化单元格。
【讨论】:
不幸的是,这似乎不起作用。添加代码:cell.backgroundColor=[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];不做任何改变任何单元格的事情,它们都是默认的白灰色。【参考方案4】:尝试添加以下行
[[cell contentView] setBackgroundColor:[UIColor colorWithRed:0 green:128/255.f blue:0 alpha:1]];
在方法中
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
与您在 willDisplayCell 方法中使用的逻辑相同
这里建议:http://www.zenbrains.com/blog/en/2010/06/color-de-fondo-de-celdas-vacias/
*注意我们改变了 [cell contentView] 的背景颜色
【讨论】:
请仔细阅读问题。这不是设置表格背景颜色的问题,我想改变实际单元格的颜色,包括空单元格。以上是关于如何根据位置修改空 UITableViewCell 对象的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 文本在 UITableViewCell 中的位置
如何在点击时更改 UITableViewCell 的部分位置
如何从 UITableViewCell 获取当前位置(帧)?