5

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

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

有没有人经历过这种行为?

4

4 回答 4

7

我觉得解决这个问题会很简单......我将单元格的高度设置为 91px,分隔线在滚动时显示为它们应有的样子。

于 2009-10-08T18:49:14.623 回答
3

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

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

yourTable.separatorColor = [UIColor clearColor];
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2);
于 2011-01-14T00:16:48.637 回答
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 的解决方案带来的内存管理问题。

于 2012-05-29T06:05:05.893 回答
1

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

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

    // it is a bug in iOS 7
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
于 2014-04-24T14:19:07.520 回答