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

时间:2016-04-26 07:12:47

标签: ios iphone swift uitableview

我在控制器中有UITableView,我在tableHeaderView

中设置了viewDidLoad()属性
let headerView = tableView.dequeueReusableCellWithIdentifier("HeaderView") as! HeaderView
tableView.tableHeaderView = headerView

一切正常,直到我致电tableView.beginUpdates() / tableView.endUpdates()tableView.reloadData()。标题空间仍然存在,但内容空白。

我做错了什么?请建议。

1 个答案:

答案 0 :(得分:1)

== 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 NOT dequeueReusableCellWithIdentifier

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier("HeaderView") as! HeaderView
    return headerView   
}