我有一个UITableviewController
我在Swift4中以编程方式创建。
图片中标记的矩形是我的页脚视图,里面有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
请帮忙
答案 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连接组件,它将再次崩溃。