0

我可以手动在我的 uitableviewcells 上方添加一个“行分隔符”(开箱即用的 iOS 不会为此剪掉它)。所以我创建了一组 UIViews,称为 _separatorLines,我将每个索引中的一个 UIView 添加到我的“cellForRowAtIndexPath”中的 uitableviewcells'contentView

  UIView *v         = [_separatorLines objectAtIndex:indexPath.row];
  [cell.contentView addSubview:v];

但是,当我选择一个单元格时,我希望所有其他单元格的行分隔符变为红色。在 'didSelectRowAtIndexPath' 我有:

{
for(unsigned int i = 0; i < _rowsInSection-1; i ++)
{
  //make all other rows have a red content view
  if(i != indexPath.row)
  {
            NSIndexPath *I = [NSIndexPath indexPathForRow:i inSection:1];
            UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:I];

            UIView *separatingLineView = [_separatorLines objectAtIndex:I.row+1];
            separatingLineView.backgroundColor = [UIColor redColor];
            [cell.contentView bringSubviewToFront:separatingLineView];
            [separatingLineView setNeedsDisplay];

            [cell setNeedsDisplay];
            [cell.contentView setNeedsDisplay];
        }
    }

  [self setNeedsDisplay];

相反,我没有看到 uitableviewcells 的 contentView 发生变化。

4

1 回答 1

0

对我来说,我认为问题在于 NSIndexPath *I = [NSIndexPath indexPathForRow:i inSection:1];

UITableView 从“0”部分开始(就像行从“0”开始)。

也因为我的 UITableView 是委托,我停止使用

[self tableView:tableView cellForRowAtIndexPath:I];

并将其替换为

[self cellForRowAtIndexPath:I];

不确定这是否与它有关

于 2014-07-09T01:06:05.877 回答