UITableView 标头隐藏在 Swift 中的 beginUpdates() 上



我在控制器中有一个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   
}

最新更新