UITableViewController页脚

时间:2017-07-02 04:46:17

标签: ios swift uitableview swift4 tablefooterview

我有一个UITableviewController我在Swift4中以编程方式创建。enter image description here

图片中标记的矩形是我的页脚视图,里面有UITableView

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {

        let tableFooterView = UITableView()
        tableFooterView.rowHeight = 100

        return tableFooterView
    }

    override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 365
    }

我想在footerview中的tableview单元格中加载自定义单元格。我尝试使用以下代码

 tableFooterView.dequeueReusableCell(withIdentifier: emptyCellIdentifier) as! EmptyTableViewCells

但我收到错误 -

  

致命错误:在解包可选值时意外发现nil

请帮忙

1 个答案:

答案 0 :(得分:0)

在使用viewForFooterInSection方法创建时,必须为页脚tableView注册单元格,如果要将委托和数据源设置为self,则应通过标记或其他方式区分这两个表tableFooterView UITableView

tableFooterView.register(EmptyTableViewCells.self, forCellReuseIdentifier: emptyCellIdentifier)

所以你的方法将是:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    if tableView.tag == 1 {
        tableFooterView = UITableView()
        tableFooterView.register(EmptyTableViewCells.self, forCellReuseIdentifier: emptyCellIdentifier)
        tableFooterView.rowHeight = 100
        tableFooterView.tag = 2
        tableFooterView.dataSource = self
        tableFooterView.delegate = self
        return tableFooterView
    } else {
        //footer view is nil for the table view which is in the main table footer
        return nil
    }
}

这将停止tableFooterView.dequeueReusableCell行的崩溃,但您需要按照代码而不是IBOutlet在tableFooter Empty Cell上添加其他视图,如按钮和标签。如果您访问任何IBOutlet连接组件,它将再次崩溃。