如何使页脚UITableViewCell不是静态的?

时间:2018-05-23 06:35:40

标签: ios swift uitableview

enter image description here

我有2个原型动态单元,名为InvoiceDetailCell和TotalCostFooterCell。我使用viewForFooterInSection将TotalCostFooterCell作为页脚单元格视图。这是我用来将数据分配给UITableView

的代码

这是我在UITableViewController中的代码。

extension InvoiceDetailVC : UITableViewDataSource {
    // MARK: - UI Table View Datasource Methods

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "InvoiceDetailCell", for: indexPath) as! InvoiceDetailCell
        cell.invoiceElementData = invoiceElements[indexPath.row]

        return cell
    }



}


extension InvoiceDetailVC : UITableViewDelegate {

    // MARK: - UI Table View Delegate Methods

    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let cell = tableView.dequeueReusableCell(withIdentifier: "invoiceDetailFooterCell") as! TotalCostFooterCell
        cell.totalCost = singleInvoiceData.unpaid

        return cell
    }

}

但结果并不像我预期的那样,我的意思是页脚单元是粘/不移动。这是.gif文件:http://g.recordit.co/vf0iwCfEWX.gif

你可以看到总成本(红色)是粘性/静态的,我希望页脚单元格可以滚动并始终在底部。或者我是否有错误实施我想要的东西?

enter image description here

3 个答案:

答案 0 :(得分:1)

将表格样式分组

你可以用两种方式做到:

  1. viewDidLoad()执行tableView.style = .grouped
  2. 从情节提要中选择表格视图,然后在属性检查器中将样式更改为分组。请参阅附图。enter image description here

答案 1 :(得分:0)

难道你不能把它作为表格视图的最后一行吗?我的意思是,视图已经是一个表视图单元格,所以将它用作最后一行是有意义的。

首先改变这个:

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

然后是cellForRowAt

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.row == invoiceElements.count {
        let cell = tableView.dequeueReusableCell(withIdentifier: "invoiceDetailFooterCell") as! TotalCostFooterCell
        cell.totalCost = singleInvoiceData.unpaid

        return cell
    }
    let cell = tableView.dequeueReusableCell(withIdentifier: "InvoiceDetailCell", for: indexPath) as! InvoiceDetailCell
    cell.invoiceElementData = invoiceElements[indexPath.row]

    return cell
}

答案 2 :(得分:0)

您可以按以下方式设置所需的自定义视图:

tableView.tableFooterView = yourCustomView

或者您可以将所有内容放在xib / storyboard中: