代码之家  ›  专栏  ›  技术社区  ›  jtrim

UITableView分隔线在滚动条上的单元格之间消失

  •  5
  • jtrim  · 技术社区  · 16 年前

    问题:

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

    有人经历过这种行为吗?

    4 回复  |  直到 16 年前
        1
  •  7
  •   jtrim    16 年前

    我觉得解决这个问题的办法很简单。。。 我将单元格的高度设为91px,分隔线显示在滚动条上。

        2
  •  3
  •   Marc Provost    15 年前

    但是,我通过使用透明分隔符并在单元格的contentView中添加我自己的分隔符,成功地解决了这个问题,如下所示:

    yourTable.separatorColor = [UIColor clearColor];
    separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2);
    
        3
  •  3
  •   Tim    11 年前

    我也有同样的问题,但我使用了不同的解决方案。

    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的解决方案带来的内存管理问题。

        4
  •  1
  •   Mihriban Minaz Andy Davies    12 年前

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
        // it is a bug in iOS 7
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;