我知道之前已经问过这个问题。但互联网上的任何人都没有充分的答案。
编辑 显然人们不再在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:
,prepareForReuse
,awakeFromNib]
以及其他一些内容。
无论如何,这个分隔符是零。所以我需要一个在设置单元格的完整视图层次结构时调用的方法。
答案 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()
}
}