在TableView中显示标题

时间:2017-01-15 18:44:45

标签: ios header swift3 tableview

我开始为一件我不能做的简单事情而疯狂:显示tabeview Header。我正在使用带有动态表视图的Swift 3.0。在此tableview中,我创建了一个联系人目录,用户可以在其中添加联系人列表。 我在动态原型内容的故事板中声明了我的tableview。以编程方式,我做我需要做的事情,让我的联系人列表和我的列表在我的表格视图中正确显示。

然后我宣布1节并使用以下方法:

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

            return 50.0
}

在标题中,我添加了一个按钮,可以在我的联系人列表上执行某些操作:

func tableView(tableView:UITableView,viewForHeaderInSection section:Int) - > UIView的? {

    let frame: CGRect = tableView.frame
    let DoneBut: UIButton = UIButton(frame: CGRect(x: frame.size.width - 200, y: 0, width: 150, height: 50))
    DoneBut.setTitle("Done", for: .normal)
    DoneBut.backgroundColor = UIColor.red



    DoneBut.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)

    DoneBut.backgroundColor = UIColor.blue


    let headerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height))
    headerView.backgroundColor = UIColor.red
    headerView.addSubview(DoneBut)

    return headerView


}

=>结果是没有标题只显示我的列表。有关Header的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您需要稍微修改heightForHeaderInSectionviewForHeaderInSection方法。 您必须为两个方法添加覆盖,并在两个方法的第一个括号后添加“_”。 (见下文)

使用此代码,为我显示部分标题。

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

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let frame: CGRect = tableView.frame
    let DoneBut: UIButton = UIButton(frame: CGRect(x: frame.size.width - 200, y: 0, width: 150, height: 50))
    DoneBut.setTitle("Done", for: .normal)
    DoneBut.backgroundColor = UIColor.red



    DoneBut.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)

    DoneBut.backgroundColor = UIColor.blue


    let headerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: frame.size.width, height: 50))
    headerView.backgroundColor = UIColor.red
    headerView.addSubview(DoneBut)

    return headerView
}