答案 0 :(得分:1429)
只需将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];
}
答案 1 :(得分:128)
这是另一种方法来完成分组表样式,而你可能不会猜到。将标题和页脚添加到表(可能是一个或其他足够的,未检查)会导致分隔符从填充/空行中消失。
我偶然发现了这一点,因为我想在桌子的顶部和底部留出一点空间,以减少按钮的风险,而不是用手指粗糙的桌子。这是一种将空白视图作为页眉和页脚粘贴的方法。使用您喜欢的任何高度,您仍然可以消除额外的分隔线。
- (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方法短路以进行验证。 没有它,我有额外的行分隔符;使用代码,我看到你在这个窗口中看到的内容:no table row separators picture。所以我不确定为什么它不适合你。此外,对我来说,在表视图上设置任何自定义页脚必然会停止为其下方的空行绘制行分隔符。那将是可怕的。作为参考,我查看了可以在屏幕上查看的行数更多的表格,然后查看了包含两行的表格。在这两种情况下,都没有无关的分隔符。
也许您的自定义视图实际上并未添加。要进行检查,请将背景颜色设置为clearColor
以外的其他颜色,例如[UIColor redColor]
。如果您在桌子底部没有看到一些红条,则表示您的页脚未设置。
答案 2 :(得分:61)
在 Swift
中的UITableView中删除空行的额外分隔线override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
答案 3 :(得分:34)
我想扩展 wkw 回答:
只需添加高度为0的页脚即可。 (在sdk 4.2,4.4.1上测试)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
甚至更简单 - 在您设置tableview的地方,添加以下行:
//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 :)
答案 4 :(得分:22)
只需将UIView
拖到您的UITableView
作为页脚。将页脚视图的高度设置为0.
答案 5 :(得分:18)
试试这个。它对我有用:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
答案 6 :(得分:12)
override func viewDidLoad() {
super.viewDidLoad()
tableView.tableFooterView = UIView()
}
答案 7 :(得分:8)
你可以在最后添加一个空页脚,然后它会隐藏空单元格,但它看起来也很难看:
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
答案 8 :(得分:8)
如果您使用的是Swift,请将以下代码添加到管理tableview的控制器的 viewDidLoad :
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView(frame: CGRectZero)
}
对于Swift 4.0,不推荐使用CGRectZero,因此您必须使用CGRect.zero
答案 9 :(得分:7)
推进J. Costa的解决方案:您可以通过以下代码行对表进行全局更改:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
在第一种可能的方法中(通常在AppDelegate
中,在application:didFinishLaunchingWithOptions:
方法中)。
答案 10 :(得分:6)
只需添加此代码( Swift )。
tableView.tableFooterView = UIView()
答案 11 :(得分:6)
我知道这个问题已被接受,但我在这里提出了不同的方法来隐藏UITableView
的额外分隔线。
您可以隐藏tableView
的标准分隔线,并在每个单元格的顶部添加自定义行。
更新:
添加自定义分隔符的最简单方法是添加1px高度的简单UIView
:
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];
尝试任何一个;
答案 12 :(得分:5)
uitableview额外的分隔线隐藏额外的分隔符行隐藏在swift 3.0中
self.tbltableView.tableFooterView = UIView(frame: .zero)
答案 13 :(得分:4)
如果您不希望在最后一个单元格之后有任何分隔符,那么您的页脚需要接近零但非零高度。
在UITableViewDelegate
:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
答案 14 :(得分:4)
Swift 适用于:
tableView.tableFooterView = UIView()
答案 15 :(得分:3)
我使用表格视图来显示固定数量的固定高度行,所以我只是调整了它的大小并使其不可滚动。
答案 16 :(得分:3)
要以编程方式从UItableview底部消除额外的分隔线,只需记下以下两行代码,它将从中删除额外的分隔符。
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
这个技巧一直对我有用,试一试。
答案 17 :(得分:3)
您可能会找到许多有关此问题的答案。它们中的大多数都围绕使用UITableView
的{{1}}属性进行操作,这是隐藏空行的正确方法。为了方便起见,我创建了一个简单的扩展,该扩展允许从Interface Builder打开/关闭空行。
您可以从此gist文件中签出。我希望它可以节省您的时间。
tableFooterView
用法:
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
答案 18 :(得分:3)
只需添加一个视图,其中所需的分隔符颜色为背景颜色,100%宽度,位置x0 y-1处的1px高度到tableViewCell。确保tableViewCell没有剪辑子视图,而不是tableView应该。
因此,您只能在现有单元格之间获得绝对简单且有效的分隔符,而不会出现每个代码或IB的任何黑客攻击。
注意:在垂直顶部反弹处显示第一个分隔符,但这不应该是一个问题,因为它是默认的iOS行为。
答案 19 :(得分:1)
我很幸运地实现了一个接受的答案(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
,此工作正常(如果您有多个部分,则需要指定最后一个部分)。
答案 20 :(得分:1)
如果您想在UITableview中删除不需要的空间,可以使用以下两种方法
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml"));
conf.addResource(new Path("/usr/local/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml"));
答案 21 :(得分:1)
如果您只有一个部分,那么最快捷,最简单的方法就是从" Plain"设置表视图样式。到" Grouped"。 (见图)
如果您有更多部分,则可能需要将标题高度设置为零(取决于您/您的客户&/ /您的项目经理的品味)
如果您有更多部分,并且不想弄乱标题(即使在最简单的情况下它只是一行),那么您需要将UIView设置为页脚,因为它已被解释在之前的答案中)
答案 22 :(得分:1)
故事板的一点延伸:
extension UITableView {
@IBInspectable
var hideSeparatorForEmptyCells: Bool {
set {
tableFooterView = newValue ? UIView() : nil
}
get {
return tableFooterView == nil
}
}
}
答案 23 :(得分:1)
快速简便的Swift 4方式。
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
如果你有静电电池。您还可以从“检查器”窗口关闭分隔符。 (如果你需要分离器,这将不可取。在这种情况下,使用上面显示的方法)
答案 24 :(得分:1)
尝试一下
用于目标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()
}
答案 25 :(得分:0)
如果您的searchbar
中有view
(例如,为了限制结果数量),您还必须在shouldReloadTableForSearchString
和shouldReloadTableForSearchScope:
中添加以下内容
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
答案 26 :(得分:0)
试试这个
self.tables.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 10.0f)];
答案 27 :(得分:0)
UIKit
有tableView
时, tableFooterView
不会创建空单元格。因此,我们可以制作一个技巧,并指定一个零高度UIView
对象作为tableView
的页脚。
tableView.tableFooterView = UIView()
答案 28 :(得分:0)
在Swift中(我使用的是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)
}
答案 29 :(得分:0)
我添加了这个小的tableview扩展,可在整个过程中提供帮助
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
答案 30 :(得分:0)
您只需添加较小的页脚高度即可删除空行的分隔符
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
答案 31 :(得分:-1)
我只是在ViewDidLoad函数中添加了这一行并修复了问题。
tableView.tableFooterView = [[UIView alloc] init];
答案 32 :(得分:-1)
如果您要对UITableView进行子类化,则需要执行此操作...
-(void)didMoveToSuperview {
[super didMoveToSuperview];
self.tableFooterView = [UIView new];
}
答案 33 :(得分:-1)
Swift 3 / Swift 4,非常简单方便
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//MARK:- For Hiding the extra lines in table view.
tableView?.tableFooterView = UIView()
}
OR
override func viewDidLoad(_ animated: Bool) {
super.viewDidLoad(animated)
//MARK:- For Hiding the extra lines in table view.
tableView?.tableFooterView = UIView()
}