我想显示具有不同背景颜色的最后一个可见单元格(比如绿色)。 我正在使用这段代码,直到我向上/向下滚动它才有效。当我向上/向下滚动时,它给出了许多具有绿色背景的单元格。 (我想这是由于“dequeueReusableCellWithIdentifier”而发生的)。 任何人都可以帮助我解决我做错的地方或者最好的方法。
NSArray* indexPaths = [tableView indexPathsForVisibleRows];
if (indexPath.row==[indexPaths count]-1)
{
UIView *v=[[UIView alloc]initWithFrame:cell.bounds];
v.backgroundColor=[UIColor greenColor];
cell.backgroundView=v;
}
提前致谢。
答案 0 :(得分:2)
首先,你不应该在cellForRowAtIndexPath
中分配任何东西 - 这对性能不利。您应该只配置每个单元格已存在的视图和控件。由于单元格被重复使用,因此您添加背景视图的单元格也将被重复使用...及其背景视图。
在您的情况下,您可能只想设置:
if (lastCell)
cell.contentView.backgroundColor = [UIColor greenColor];
else
cell.contentView.backgroundColor = [UIColor clearColor]; //or whatever color
contentView
已经是每个UITableViewCell
免费提供的视图,因此只需将其用于背景色。苹果可能打算将它用于这种情况,等等。
答案 1 :(得分:0)
您应该在测试之前忽略背景视图。
cell.backgroundView = nil;
if (indexPath.row==[indexPaths count]-1)
{
UIView *v=[[UIView alloc]initWithFrame:cell.bounds];
v.backgroundColor=[UIColor greenColor];
cell.backgroundView=v;
}
答案 2 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==[yourtableviewarray count]-1)
{
UIView *v=[[UIView alloc]initWithFrame:cell.bounds];
v.backgroundColor=[UIColor greenColor];
cell.backgroundView=v;
}
}