我将UITableView
设置为UITableViewStyleGrouped
样式。只要某个部分包含一个或多个项目,它就会在部分标题下方显示一个像素分隔符。但是,如果该部分没有项目,则部分之间没有分隔符。
如何让分隔符出现在所有部分中,即使是那些没有单元格的部分?
注意第1节和第2节在它们和第一个单元格之间是否有分隔符,但第3节在它和第4节之间没有分隔符。
答案 0 :(得分:1)
使用这两种方法在Section之间添加分隔符。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44.0;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
[headerView setBackgroundColor:[UIColor brownColor]];
UIImageView *img = [[UIImageView alloc]initWithFrame:CGRectMake(0, 43, 320, 1)];
img.backgroundColor = [UIColor whiteColor];
[headerView addSubview:img];
return headerView;
}
答案 1 :(得分:1)
一种解决方案是在每个空白部分添加一个页脚:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return [self tableView:tableView numberOfRowsInSection:section] == 0 ? 0.5 : 0.00000001;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
if ([self tableView:tableView numberOfRowsInSection:section] == 0) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.5)];
view.backgroundColor = tableView.separatorColor;
return view;
} else {
return nil;
}
}
注意:
这在大多数情况下会产生正确的结果:
......但有几个问题:
问题2和3的例子:
在上图中,注意第2和第3部分之间没有线,因为所有项目都已移出该部分(问题2)。
另请注意第3节和第4节中的最后一项是如何具有双边框的,因为它们被拖入新的部分(问题3)。
答案 2 :(得分:0)
您可以尝试自定义节标题视图。使用此委托函数: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;