我在控制器中有一个UITableView
,在tableHeaderView
中设置其viewDidLoad()
属性
let headerView = tableView.dequeueReusableCellWithIdentifier("HeaderView") as! HeaderView
tableView.tableHeaderView = headerView
一切正常,直到我调用
tableView.beginUpdates()
/ tableView.endUpdates()
或tableView.reloadData()
为止。标头空间仍然存在,但是内容变为空白。我究竟做错了什么 ?请提出建议。
最佳答案
==编辑于2016年10月12日==
您不应该使标题视图出队。而是使用view属性,并将该视图分配为tableview的headerview:
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
}
}
==原始答案-无法解决问题==
您不应将headerview放在viewDidLoad上。而是在委托中创建并返回标头(以下代码假定您有一个部分)。
重要提示:您需要调用
dequeueReusableHeaderFooterViewWithIdentifier
而不是dequeueReusableCellWithIdentifier
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier("HeaderView") as! HeaderView
return headerView
}
关于ios - UITableView header 隐藏在Swift中的beginUpdates()上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36857778/