自定义静态tableview标头-Swift

时间:2018-11-22 09:05:04

标签: ios uitableview header

我正在尝试使用UITableViewCell自定义静态UITableViewController节标题。

通过使用以下代码集,我可以成功地在动态tableView中自定义节标题

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerCell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell")
        headerCell?.textLabel?.text = "Section \(section + 1)"
        headerCell?.textLabel?.textColor = UIColor.blue
        return headerCell
    }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50
    }

但是,不能用于静态tableview。 如何使用静态tableView自定义节标题

2 个答案:

答案 0 :(得分:-1)

问题是您应该在UIView方法中返回UITableViewCell,而不是viewForHeaderInSection

此外,您还应保留一个标头单元格实例以供将来使用(例如修改其视图)

像这样在您的TableViewController中创建一个字段:

private var headerViewCell: UITableViewCell?

,然后在viewForHeaderInSection中执行以下操作:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerCell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell")
    headerCell?.textLabel?.text = "Section \(section + 1)"
    headerCell?.textLabel?.textColor = UIColor.blue
    self.headerViewCell = headerCell
    return headerCell?.contentView
}

答案 1 :(得分:-1)

我认为您在使用dequeueReusableCell时应该打开单元格。

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerCell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell") as! HeaderCell   //  here header cell is your cell's custom class
        headerCell.textLabel.text = "Section \(section + 1)"
        headerCell.textLabel.textColor = UIColor.blue
        return headerCell
    }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50
    }