如何在iOS的TableViewController中删除多余的空单元格-Swift


118

嗨,我有一个TableViewController带有两个静态单元格的,但是在显示时,它显示了两个静态单元格,然后显示了tableview的所有其他空单元格。但是我不想显示这些单元格,因为它们没有用。如何隐藏除两个静态单元格以外的其余单元格?

Answers:


403

在您的viewDidLoad()函数中添加以下代码行:

tableView.tableFooterView = UIView()

4
简短而有效!像魅力一样工作!
yogipriyo

6
这是什么意思?你能详细说明吗?
Jayprakash Dubey

此答案在Swift 3中仍然有效。此外,如果将tableview背景色设置为与主视图背景色相同,它将使页脚看起来好像消失了。
米哈·蒙托亚

有类似的解决方案NSTableView吗?它没有tableFooterView
ixany

SWIFT 3.0适用于tableView.tableFooterView = UIView()
Marcelo Gracietti

19

选择UITableView,转到属性检查器,然后将样式更改为“分组”。

在此处输入图片说明


7

除此之外,设置tableFooterViewUIView()删除行的原因是因为您正在UIView()为属性设置一个空对象。根据Apple文档:

var tableFooterView: UIView?

因此,设置一个空的UIView()不会在此属性的数据下方显示任何内容。

您可以通过tableFooterView将默认值重置为空行,如下所示:

tableView.tableFooterView = nil

2
抱歉,看起来不像黑客吗?
AOY

2
不,这是一种完全有效的方法。如果要设置自定义tableFooterView,则需要先创建一个自定义UIView,然后再将其设置为tableFooterView。然后将其重置为nil只是将其恢复为默认值。
吐司

我懂了。谢谢)这对我来说
有点奇怪,

6

设置tableFooterView应该会删除多余的单元格,例如视图。

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }

3

您也可以在Storyboard中实现此目的,方法是简单地将视图拖动到表格视图的页脚区域,然后使用属性检查器将其高度和背景色分别设置为1和清除。

(这假设您出于某种原因不能或不希望仅使用“组”样式设置。否则,请这样做。)


3

Swift 4 详细介绍HorseT的答案,首先将控件从情节提要中的Table View拖动到View Controller类,然后创建一个名为tableView的出口。

@IBOutlet weak var tableView: UITableView!

然后,您的View Controller中的viewDidLoad应该看起来像这样:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}


2

如果要删除UITableViews应用程序中所有内容的行,只需添加一个扩展名,如下所示:

斯威夫特5.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}

1
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

viewWillAppear方法内部调用此代码。并且会工作


1

在“ 重写函数viewDidLoad() ”或“重写函数viewWillAppear(_动画:布尔)”函数中添加以下代码。

tblOutletName.tableFooterView = UIView()


0

只需添加:

tableView.tableFooterView = UIView()

说明:

这是完全有效的,并且可以在swift 3中完美运行。由于您为属性设置了一个空的UIView()对象,因此将tableFooterView设置为UIView()会删除行。



-3

我尝试了tableview.tableFooterView = UIView(),但它对我不起作用。我使用的是自定义TableViewViewCell,这也许就是原因。

我确实找到了骇客。在我的func numberOfRowsInSection中

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourArrayClass.count - 1
}

这使得我多余的空白自定义UITableViewCell不再显示。当然,它是额外的空白。我将通过添加更多的单元格对其进行更多测试。作为参考,我在cellForRowAt函数内部使用了Swift 3 Firebase,这是一个自定义单元类。


这不会显示数组中的最后一项。
elarcoiris
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.