tableViewheader 中的按钮无法识别 header 否。 0

Button in tableViewheader doesn't recognize header no. 0

我有这个问题,希望你能帮帮我。

这是我在 viewForHeaderInSection 中的代码:

let button = UIButton(frame: CGRect(x: view.frame.width - (cancel.frame.width + xImage.frame.width + 100), y: view.frame.origin.y, width: cancel.frame.width + xImage.frame.width + 120, height: view.frame.height))
button.backgroundColor = UIColor.blue.withAlphaComponent(0.5)
button.addTarget(self, action: #selector(action), for: .touchUpInside)
view.addSubview(button)

这是action func:

@objc func action(sender: UIButton) {
    let position: CGPoint = sender.convert(CGPoint.zero, to: self.tableView)
    if let indexPath = self.tableView.indexPathForRow(at: position) {
        let section = indexPath.section
        print(section)
    }
}

现在,如果我点击除第一个 (header 0) 之外的每个 header,它会打印正确的部分。 如何让它也检测到 header 0?

如果您想知道哪个是按钮的部分,您可以将该部分分配给按钮的标签,例如:

在你的viewForHeaderInSection

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
   let button = UIButton(frame: CGRect(x: view.frame.width - (cancel.frame.width + xImage.frame.width + 100), y: view.frame.origin.y, width: cancel.frame.width + xImage.frame.width + 120, height: view.frame.height))
   button.backgroundColor = UIColor.blue.withAlphaComponent(0.5)
   button.addTarget(self, action: #selector(action), for: .touchUpInside)
   view.addSubview(button)
   button.tag = section // this is the trick
}

然后在动作里面:

@objc func action(sender: UIButton) {
    let section = sender.tag
    print(section)
}