如何删除TableViewController,iOS中的额外空单元格 - Swift

时间:2015-02-24 23:45:24

标签: ios swift tableview

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

14 个答案:

答案 0 :(得分:318)

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

tableView.tableFooterView = UIView()

答案 1 :(得分:8)

选择您的UITableView,转到属性检查器并将样式更改为Grouped。

enter image description here

答案 2 :(得分:6)

要添加此功能,将tableFooterView设置为UIView()的行会删除行的原因是因为您要为属性设置一个空的UIView()对象。根据Apple文档:

var tableFooterView: UIView?

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

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

tableView.tableFooterView = nil

答案 3 :(得分:5)

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

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

答案 4 :(得分:3)

Swift 4 详细说明HorseT的答案,首先控制从故事板中的表视图拖动到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()
}

答案 5 :(得分:2)

您也可以在Storyboard中实现这一点,只需将视图拖动到表格视图的页脚区域,然后使用属性检查器将其高度和背景颜色设置为1并分别清除。

(这假设您出于某种原因不能或不想仅使用组样式设置。否则,只需这样做。)

答案 6 :(得分:1)

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

viewWillAppear方法中调用此代码。并将工作

答案 7 :(得分:1)

基于 swift 中的上述答案。

tableView.tableFooterView = UIView(frame: .zero)

答案 8 :(得分:1)

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

Swift 4.0

extension UITableView {

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

}

答案 9 :(得分:0)

只需添加:

tableView.tableFooterView = UIView()

说明:

这是完全有效的,并且在swift 3中工作得很好。因为你要为属性设置一个空的UIView()对象,所以将tableFooterView设置为UIView()会删除这些行。

答案 10 :(得分:0)

在“ 替代函数viewDidLoad()”或“替代函数viewWillAppear(_bool动画)”功能中添加以下代码。

  

tblOutletName.tableFooterView = UIView()

答案 11 :(得分:-2)

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

我确实找到了一个黑客。在我的函数numberOfRowsInSection

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

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

答案 12 :(得分:-2)

在swift 4中,您可以使用简单的一行代码删除那些不必要的行:

//tableview refers to your UITableView
tableView.separatorStyle = .none

答案 13 :(得分:-2)

Abobe anwer是对的。我们可以通过添加

来实现这一目标
tableView.tableFooterView = UIView() // to remove extra cells in tableView