动态地将边界子视图添加到UITableViewCell

时间:2012-01-28 01:27:03

标签: iphone ios uitableview

我正在尝试使用UIImageView为我的所有tableview单元格添加自定义底部边框,我在运行时以编程方式添加到单元格中。问题是,当用户滚动时,边框会随机消失。

此代码位于我的cellForRowAtIndexPath方法中:

UIImageView* border = (UIImageView*)[cell viewWithTag:10];
if (border)
    [border removeFromSuperview];

NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = indexPath.row;

if (row != sectionRows - 1) {
    UIImageView* border = [[UIImageView alloc] initWithImage:[[ImageManager sharedManager] imageNamed:@"dashed_border"]];
    [border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath], 290, 1)];
    [border setTag:10];
    [cell addSubview:border];
    [border release];
}

如果它存在,则删除边框子视图,如果该行不是底行,则在该行的底部插入边框。

我不确定这是否是竞争条件,或者是否有某些时候在用户滚动时没有调用cellForRowAtIndexPath。

1 个答案:

答案 0 :(得分:1)

下面的单元格可能位于边框顶部。它取决于表视图中子视图的顺序,并在滚动时更改顺序。

这是因为您要在单元格边界之外添加边框。尝试将它向上移动1px。像:

[border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath] - 1, 290, 1)];