我有一个UITableView
,我只有 3 行,我可以看到这 3 行。问题是空的单元格:我可以看到那里的线条。我不想看到那些线条。
知道如何删除这些行吗?
下面是我正在寻找的图像。
我有一个UITableView
,我只有 3 行,我可以看到这 3 行。问题是空的单元格:我可以看到那里的线条。我不想看到那些线条。
知道如何删除这些行吗?
下面是我正在寻找的图像。
甚至比 Andrey Z 的回复更简单:只需在 UITableView 类中创建一个虚假的 tableFooterView:
self.tableFooterView = [UIView new]; // to hide empty cells
和斯威夫特:
tableFooterView = UIView()
您可以使用以下任一代码片段来隐藏UITableView
的标准分隔线。添加自定义分隔符最简单的方法是添加一个简单UIView
的 1px 高度:
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 的答案,它也很短且很有帮助。你也应该试试这条线,
self.tableView.tableFooterView = [[UIView alloc] init];
不确定,但它适用于我检查过的所有 iOS 版本,包括 iOS 5 及更高版本,直至 iOS 7。
更新了 swift 和 iOS 9 的答案。这适用于.Plain
各种表格视图。
tableView.tableFooterView = UIView()
透明UIView
为tableView
1px 高度的页脚就可以了。
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1)];
v.backgroundColor = [UIColor clearColor];
[self.tableView setTableFooterView:v];
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
使用此代码删除空单元格的分隔线。
- (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];
}
只是返回一个空UIView()
的viewForFooterInSection
为我工作:
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
请尝试以下代码:
self.tblView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
if ([self.tblView respondsToSelector:@selector(setSeparatorInset:)])
{
[self.tblView setSeparatorInset:UIEdgeInsetsZero];
}
// write in view did load
tableForBrands.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
没有一个建议的答案适合我的类似问题。在 tableView 委托中实现这个方法终于奏效了:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
如果您使用 Storyboards,您可以将 UIView 拖放到单元格下方的 UITableView 中,并将其高度设置为 0。(仅在 iOS 8 项目中测试过)
我想这就是你要找的。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 1.0f;
}
您可以将表格视图设置为分组而不是简单的 - 这会稍微改变外观,但至少会删除多余的行。
我遇到了这个确切的问题,最终更改为分组视图。看起来好多了。
以前的一些建议包含一个很大的概念错误:
如果你这样做:
[单元格添加子视图:....
即使一个单元格被“重用”,你也会为分隔线添加一个新的子视图!
通过两种方式避免它:
a) 使用 TAG,并且: 1) 请求该标签的子视图 let divider = cell.viewWithTag(TAG) ... 2) 如果存在,不要添加另一个子视图 3) 如果不存在,添加并标记它。
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)
}
在 cellForRowAtIndexPath 内部
let separatorLineView:UIView = UIView(frame: CGRectMake(0,0,self.tableview.bounds.width,0.5))
separatorLineView.backgroundColor = tableView.separatorColor
cell!.contentView.addSubview(separatorLineView)
快速解决方案:tableView.tableFooterView = UIView(frame: CGRectZero)
在 Xcode 7.2 上工作