为什么我不能在启动后更改UITableViewCell的ContentView

时间:2014-07-08 21:44:56

标签: uitableview setcontentview

我可以添加一个'行分隔符'手动上面我的uitableviewcells(开箱即用的iOS并不是为此而削减它)。所以我创建了一个名为_separatorLines的UIViews数组,我将每个索引中的一个UIView添加到uitableviewcells'我的' cellForRowAtIndexPath'中的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发生变化。

1 个答案:

答案 0 :(得分:0)

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

UITableView从第0节开始(就像行从'0'开始)。

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

[self tableView:tableView cellForRowAtIndexPath:I];

并将其替换为

[self cellForRowAtIndexPath:I];

不确定这与它有什么关系