我开始为一件我不能做的简单事情而疯狂:显示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的任何建议吗?
答案 0 :(得分:1)
您需要稍微修改heightForHeaderInSection
和viewForHeaderInSection
方法。
您必须为两个方法添加覆盖,并在两个方法的第一个括号后添加“_”。 (见下文)
使用此代码,为我显示部分标题。
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
}