代码之家  ›  专栏  ›  技术社区  ›  Vineesh TP

自定义静态tableview标题-Swift

  •  0
  • Vineesh TP  · 技术社区  · 6 年前

    我正在尝试用UITableViewCell自定义静态UITableViewController节头。

    我可以使用下面的代码集成功地在动态表视图中自定义节头,

    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 回复  |  直到 6 年前
        1
  •  -1
  •   Sepehr Behroozi    6 年前

    问题是你应该返回一个 UIView ,不是 UITableViewCell 在里面 viewForHeaderInSection

    您还应该保留一个header cell的实例以备将来使用(比如修改它的视图)

    TableViewController 这样地:

    private var headerViewCell: UITableViewCell?
    

    然后在

    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
    }
    
        2
  •  -1
  •   Abu Ul Hassan    6 年前

    我认为你应该在使用时打开电池 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
        }