Answers:
只需将UIView拖到表中即可。在情节提要中,它将位于自定义单元格下方的顶部。您可能更喜欢将其命名为“页脚”。
为了清楚起见,此处以绿色显示,您可能想要清晰的颜色。
请注意,通过调整高度,可以根据需要影响表格的“底部反弹”。(高度零通常可以)。
以编程方式执行此操作:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
或者,如果您愿意,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
添加到表视图控制器...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
如果有必要...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
tableFooterView
会在行的最后一个单元格上留下一个分隔符,因为表格仍预期该单元格下方的内容。使用历史记录方式将消除最后一个分隔符,并在整体上看起来更好。
这是不使用分组表样式的另一种方法,您可能不会猜到。在表中添加页眉和页脚(可能一个或另一个都足够,尚未检查)会导致分隔符从填充/空白行中消失。
我偶然发现了这一点,因为我想在桌子的顶部和底部留一点空间,以减少击打按钮的风险,而不是用肉食的手指敲打桌子单元。这是一种将空白视图用作页眉和页脚的方法。使用任意高度,您仍然可以消除多余的分隔线。
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
作为对@Casebash的响应,我返回了我的应用程序中的代码(iTunes商店中的“ AcmeLists”列表管理器...),并将addHeaderAndFooter方法短路以进行验证。没有它,我将有多余的行分隔符。有了代码,您将在此窗口快照中看到:没有表行分隔符picture。所以我不确定为什么它对您不起作用。而且,对我而言,在表视图上具有任何自定义页脚都必须停止为其下方的空白行绘制行分隔符。那太可怕了。作为参考,我查看了行多于在屏幕上无法查看的表,然后查看了两行的表。在这两种情况下,都没有多余的分隔符。
也许实际上没有添加您的自定义视图。要检查,设置背景颜色比其他的东西clearColor
,如[UIColor redColor]
。如果您在表格底部看不到红色条形,则说明您的页脚未设置。
我想扩展wkw的答案:
仅添加高度为0的页脚即可解决问题。(已在SDK 4.2、4.4.1上测试)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
甚至更简单-在设置表视图的位置添加以下行:
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
甚至更简单-只需删除任何分隔符即可:
[_tableView setTableFooterView:[UIView new]];
再次感谢wkw :)
只需将a UIView
拖入UITableView
页脚即可。将页脚视图的高度设置为0。
尝试这个。它为我工作:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
如果您使用的是Swift,请将以下代码添加到管理tableview的控制器的viewDidLoad中:
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView()
}
您可以在末尾添加一个空白页脚,然后将其隐藏在空白单元格中,但看起来也很丑陋:
tableView.tableFooterView = UIView()
有一个更好的方法:在表格视图的末尾添加一条1点线,因为页脚和空白单元格也不再显示。
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
推进J. Costa的解决方案:您可以通过放置以下代码行来对表进行全局更改:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
在第一个可能的方法内部(通常在AppDelegate
,in:application:didFinishLaunchingWithOptions:
方法中)。
我知道这个问题已被接受,但我在这里提出了不同的方法来隐藏额外的分隔线 UITableView
。
您可以隐藏tableView
的标准分隔符行,并将自定义行添加到每个单元格的顶部。
更新:
添加自定义分隔符的最简单方法是添加UIView
1px的高度:
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[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];
}
或者 我喜欢的最好,最简单的方法是
self.tableView.tableFooterView = [[UIView alloc] init];
尝试任何一种;
您可能会找到许多有关此问题的答案。它们中的大多数都围绕使用 UITableView
的tableFooterView
属性进行操作,这是隐藏空行的正确方法。为了方便起见,我创建了一个简单的扩展,该扩展允许从Interface Builder打开/关闭空行。您可以从这个要点文件中签出。我希望它可以节省您的时间。
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
用法:
tableView.isEmptyRowsHidden = true
uitableview额外的分隔线隐藏在swift 3.0中
self.tbltableView.tableFooterView = UIView(frame: .zero)
Swift适用于:
tableView.tableFooterView = UIView()
要以编程方式从UItableview的底部消除多余的分隔符行,只需写下以下两行代码,它将删除其中的多余分隔符。
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
这个技巧一直对我有效,请尝试一下。
我很幸运地实现了一个公认的答案(iOS 9 +,Swift 2.2)。我曾尝试实现:
self.tableView.tableFooterView = UIView(frame: .zero)
但是,这对我没有任何影响tableView
-我认为这可能与我使用的事实有关UITableViewController
。
相反,我只需要重写viewForFooterInSection
方法(我没有在tableFooterView
其他地方设置):
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
这对于只有tableView
一个部分的效果很好(如果您有多个部分,则需要指定最后一个)。
故事板只是一点扩展:
extension UITableView {
@IBInspectable
var hideSeparatorForEmptyCells: Bool {
set {
tableFooterView = newValue ? UIView() : nil
}
get {
return tableFooterView == nil
}
}
}
快速简便的Swift 4方式。
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
如果您有静态单元格。您也可以从“检查器”窗口中关闭分隔符。(如果需要分隔符,这将是不希望的。在这种情况下,请使用上面显示的方法)
super.viewDidLoad()
),并且包含在顶部的Wiki答案中。至于删除所有分隔符,实际上并不是这个问题,因此最好回滚您的上一次编辑和/或完全删除答案。
我添加了这个小的tableview扩展,可在整个过程中提供帮助
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
试试这个
对于目标C
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.yourTableView.tableFooterView = [UIView new];
}
对于斯威夫特
override func viewDidLoad() {
super.viewDidLoad()
self.yourTableView.tableFooterView = UIView()
}
在斯威夫特(我使用的是4.0),你可以通过创建自定义完成这个UITableViewCell
班,和overriding
该setSelected
方法。然后separator insets
全部为0。(我的主类的表格视图具有清晰的背景)颜色。
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// eliminate extra separators below UITableView
self.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}