滚动时单元格之间的UITableView分隔线消失

时间:2009-10-08 18:38:29

标签: uitableview separator

问题:表格视图中单元格之间的分隔符仅针对视图加载时显示的单元格显示,并且仅在加载时显示。当向下滚动表视图时,滚动到视图中的单元格在它们之间没有显示分隔符,然后当向后滚动表视图时,初始单元格不显示分隔符。

详细信息:我有一个UITableView,我正在添加标准的UITableViewCells。这些单元格是使用initWithFrame创建的,帧高度= 90px。我正在将从笔尖创建的自定义视图添加到此单元格的视图中,height = 90px。在tableView:heightForRowAtIndexPath:。

中,单元格高度指定为90px

有没有人遇到过这种行为?

4 个答案:

答案 0 :(得分:6)

我有一种感觉,解决这个问题很简单...... 我将单元格的高度设置为91px,并且分隔线在滚动时显示为它们。

答案 1 :(得分:3)

我无法使用Douglas的解决方案,因为我的桌子上有大量的单元格,并且在旧手机上几乎无法使用。重用单元是性能的关键。

但是,我设法使用透明分隔符解决问题并在单元格的contentView中添加我自己的内容,如下所示:

yourTable.separatorColor = [UIColor clearColor];
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2);

答案 2 :(得分:3)

我遇到了同样的问题,但我使用了不同的解决方案。 我的分离器正在消失,因为我正在使用以下方式清理我的细胞:

for (UIView *eachView in self.subviews) {
    [eachView removeFromSuperview];
}

这也删除了分隔符视图!

相反,我在将每个海关视图(三个标签)添加到子视图之前为其分配了一个标记:

tempFirstNameLabel.tag = 100;
self.firstNameLabel = tempFirstNameLabel;
[self addSubview:self.firstNameLabel];

然后,当我清除单元格时,我只是删除了这些视图:

for (int i = 100; i<103; i++) {
    UIView *eachView = [self viewWithTag:i];
    [eachView removeFromSuperview];
}

希望这有帮助! 这也避免了@Douglas Smith解决方案带来的内存管理问题。

答案 3 :(得分:1)

您应该设置分隔符none,然后再设置单行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    // it is a bug in iOS 7
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;