我有一个UITableView
,我只有3行,我可以看到这3行。问题是空单元格:我可以在那里看到线条。我不想看到这些界限。
知道如何删除这些行吗?
以下是我正在寻找的图片。
答案 0 :(得分:146)
比Andrey Z的回复更简单: 只需在UITableView类中创建一个伪表tableFooterView:
self.tableFooterView = [UIView new]; // to hide empty cells
和斯威夫特:
tableFooterView = UIView()
答案 1 :(得分:88)
您可以使用以下任意一段代码隐藏UITableView
的标准分隔线。
添加自定义分隔符的最简单方法是添加1px高度的简单UIView
:
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor clearColor]; // set color as you want.
[cell.contentView addSubview:separatorLineView];
或强>
self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
self.tblView.delegate=self;
self.tblView.dataSource=self;
[self.view addSubview:self.tblView];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tblView setTableHeaderView:v];
[self.tblView setTableFooterView:v];
[v release];
或强>
- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
// To "clear" the footer view
return [[UIView new] autorelease];
}
或强>
还要检查nickfalk's answer,它也非常简短且有用。 你也应该尝试这一行,
self.tableView.tableFooterView = [[UIView alloc] init];
不确定,但是我在iOS 5及更高版本中检查过的所有iOS版本都适用于iOS 7。
答案 2 :(得分:7)
透明UIView
作为高度为1px的tableView
页脚可以解决问题。
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1)];
v.backgroundColor = [UIColor clearColor];
[self.tableView setTableFooterView:v];
答案 3 :(得分:7)
更新了swift& amp;的答案iOS 9.这适用于.Plain
种类的表视图。
tableView.tableFooterView = UIView()
答案 4 :(得分:6)
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
答案 5 :(得分:3)
使用此代码删除空单元格的分隔线。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
答案 6 :(得分:2)
请尝试以下代码:
self.tblView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
if ([self.tblView respondsToSelector:@selector(setSeparatorInset:)])
{
[self.tblView setSeparatorInset:UIEdgeInsetsZero];
}
// write in view did load
答案 7 :(得分:2)
只需在UIView()
中返回一个空的viewForFooterInSection
为我工作:
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
答案 8 :(得分:1)
您可以使用
tableForBrands.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
它对我有用......
答案 9 :(得分:0)
没有一个建议的答案适合我的类似问题。在tableView委托中实现此方法终于工作了:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
答案 10 :(得分:0)
如果您使用的是Storyboard,只需将UIView拖放到单元格下方的UITableView中,并将其高度设置为0.(仅在iOS 8项目中测试过)
答案 11 :(得分:0)
我想这就是你要找的东西。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 1.0f;
}
答案 12 :(得分:0)
您可以将表视图设置为分组而不是简单 - 这会稍微改变外观,但至少会删除额外的行。
我遇到了这个问题,最后改为分组视图。看起来好多了。
答案 13 :(得分:0)
之前的一些建议包含一个大概念错误:
如果你这样做:
[cell addSubview:....
即使单元格被“重用”,您也会为分隔符添加一个新的子视图!
以两种方式避免它:
a)使用TAG,并且: 1)要求该标签的子视图 让divider = cell.viewWithTag(TAG)...... 2)如果存在,请勿添加其他子视图 3)如果不存在则添加AND标记。
b)创建自定义视图并在自定义单元格的“init”“awakeFromNib”中添加自定义分隔符。
代码a):
if let divider = cell.viewWithTag(DIVIDER_TAG) as? UIView{
// nothing.. eventually change color bases in IndexPath...
}else{
let frame = CGRectMake(0, cell.frame.height-1, cell.frame.width, 1)
divider.tag = DIVIDER_TAG
divider.backgroundColor = UIColor.redColor()
cell.addSubview(divider)
}
答案 14 :(得分:0)
在cellForRowAtIndexPath中
let separatorLineView:UIView = UIView(frame: CGRectMake(0,0,self.tableview.bounds.width,0.5))
separatorLineView.backgroundColor = tableView.separatorColor
cell!.contentView.addSubview(separatorLineView)
答案 15 :(得分:0)
Swift解决方案: tableView.tableFooterView = UIView(frame:CGRectZero)
使用Xcode 7.2