我在控制器中有一个UITableView
,我正在viewDidLoad()
中设置其tableHeaderView
属性
let headerView = tableView.dequeueReusableCellWithIdentifier("HeaderView") as! HeaderView
tableView.tableHeaderView = headerView
一切正常,直到我打电话给tableView.beginUpdates()
/tableView.endUpdates()
OR tableView.reloadData()
.标头空间仍然存在,但内容变为空白。
我做错了什么?请指教。
已编辑 2016年10月12日 ==
不应将标题视图取消排队。而是使用视图属性,并将该视图指定为表视图的标题视图:
class SomeViewController: UIViewController {
// MARK: - Outlets
@IBOutlet var tableView: UITableView!
// MARK: - Properties
var headerView: UIView!
// MARK: - Lifecycle Methods
override func viewDidLoad() {
super.viewDidLoad()
headerView = HeaderView()
tableView.headerView = headerView
}
}
== 原始答案 - 不解决问题 ==
您不应该将标题视图放在 viewDidLoad 上。而是在委托中创建并返回标头(下面的代码假设您有一个部分)。
重要提示:您需要致电dequeueReusableHeaderFooterViewWithIdentifier
而不是dequeueReusableCellWithIdentifier
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier("HeaderView") as! HeaderView
return headerView
}