我编写了以下代码,用于在节标题视图的中心添加文本标签。
代码的后半部分是添加宽度为100的UIButton
并与节标题的右角对齐。
结果是:只有添加的标签显示在中心。该按钮根本不显示在标题上!
请你指点一下我在执行中出错的地方?谢谢。
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
// code for adding centered title
headerView.backgroundColor = UIColor.gray
let headerLabel = UILabel(frame: CGRect(x: 0, y: 0, width:
tableView.bounds.size.width, height: 28))
headerLabel.textColor = UIColor.black
headerLabel.text = titlesList[section]
headerLabel.textAlignment = .center
headerView.addSubview(headerLabel)
// code for adding button to right corner of section header
let showHideButton: UIButton = UIButton(frame: CGRect(x:headerView.frame.size.width - 100, y:0, width:100, height:28))
showHideButton.setTitle("Show Closed", for: .normal)
showHideButton.backgroundColor = UIColor.blue
showHideButton.addTarget(self, action: #selector(btnShowHideTapped), for: .touchUpInside)
headerView.addSubview(showHideButton)
return headerView
}
答案 0 :(得分:1)
let showHideButton: UIButton = UIButton(frame: CGRect(x:headerView.frame.size.width - 100, y:0, width:100, height:28)
按钮的X位置是headerView
减去100的大小。但是headerView没有框架(let headerView = UIView()
),这意味着它的宽度为0.因此,您的按钮位于X -100。
我想你输错了,并打算根据表的宽度定位它:
let showHideButton: UIButton = UIButton(frame: CGRect(x:tableView.bounds.size.width - 100, y:0, width:100, height:28)
答案 1 :(得分:1)
你的问题是这一行:
let headerView = UIView()
您尚未指定任何框架尺寸,因此下面的行不会是showHideButton
框架的可识别尺寸:
let showHideButton: UIButton = UIButton(frame: CGRect(x:headerView.frame.size.width - 100, y:0, width:100, height:28))
当您声明headerView
:
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 100))