UITableView分组隐藏部分分隔符

时间:2015-08-12 12:37:47

标签: ios objective-c iphone uitableview

我知道之前已经问过这个问题。但互联网上的任何人都没有充分的答案。

编辑 显然人们不再在SO上阅读问题了。所以我试图澄清一下:我想删除SEPARATOR。分隔符既不是节上面的空格,也不是tableViewHeader或tableViewFooterView。它只是上面的细线(完全从左到右)。

我有一个分组UITableView(我不想使用简单的样式,出于许多其他原因,按原样使用),它有多个组。

第一部分的顶部不应有分隔线。设置tableView的分隔符样式不是一个选项,因为我确实需要其他分隔符。

设置tableViews tableFooterView是我经常阅读的内容,但它从未奏效。

之前我使用了tableView和静态内容,我可以使用这个删除-[UITableViewController viewDidLoad]中的分隔符:

- (void)viewDidLoad {
    [[[self headerTableCell] valueForKey:@"_topSeparatorView"] removeFromSuperView];
}

由于我现在必须将tableView更改为动态的,IBOutlet属性不再有效(显然)。

所以我尝试了所有内容,-[id tableView:willDisplayCell:atIndexPath:]-[UITableViewCell initWithStyle:reuseIdentifier:prepareForReuseawakeFromNib]以及其他一些内容。

无论如何,这个分隔符是零。所以我需要一个在设置单元格的完整视图层次结构时调用的方法。

4 个答案:

答案 0 :(得分:2)

我从你的情况得到你有一个分组的UITableView,你想要第一节没有分隔符,你想保持分隔符在其他部分所以 从属性检查器中从整个tableview中删除分隔符 make 分隔符:无 在故事板中为其他部分创建自定义UITableviewCell,并在其末尾添加查看,高度为1,宽度为整个屏幕(如默认分隔符) 它可能不是最好的主意,但这将允许你让第一部分没有分隔符

答案 1 :(得分:0)

我遇到了类似的问题,想要在分组表视图中删除该部分的最后一行,我在视图中调用以下方法会出现并在每个表上重新加载。这不是确切的答案,但只需更改虚拟视图的y值即可解决问题。

+(void)removeLastSectionSeparatorForTableView:(UITableView *)tableView
{
    UIView *oldSeparatorView = [tableView viewWithTag:kTagDummySectionSeparator];

    if (oldSeparatorView != nil)
    {
        [oldSeparatorView removeFromSuperview];
    }

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(),
                   ^{

                       UIView *view = [[UIView alloc] init];
                       view.tag = kTagDummySectionSeparator;
                       view.backgroundColor = [UIColor colorWithRed:239.0/255 green:239.0/255 blue:244.0/255 alpha:1.0];//Group table background color
                       view.frame = CGRectMake(0,
                                               tableView.contentSize.height-40,
                                               tableView.bounds.size.width,
                                               2);
                       [tableView addSubview:view];
                   });
}

答案 2 :(得分:0)

也许这个问题与我之前的问题相同。 最后,我解决此问题的方法:设置表格视图delegate的方法(CGFloat)tableView:(UITableView *)tableView heightForHeaderAtSection:(NSInteger)section,然后return CGFLOAT_MIN;

答案 3 :(得分:0)

在您的自定义单元格类中添加此覆盖函数

   override func layoutSubviews() {
    super.layoutSubviews()
    for subview in subviews where (subview != contentView && abs(subview.frame.width - frame.width) <= 0.1 && subview.frame.height < 2) {
        subview.removeFromSuperview()
    }
 }