我是swift新手,当我点击viewForFooterInSection中的按钮时会遇到问题
我的代码是这样的
在viewForFooterInSection中
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerview = Bundle.main.loadNibNamed("TimeSheetFooterTableViewCell", owner: self, options: nil)?.first as! TimeSheetFooterTableViewCell
let dictFeeStats = arrFinancialYears[section] as? [String:Any]
footerview.lblTimeSheetFooterID.text = dictFeeStats?["staff_timesheet_id"] as? String
footerview.btnAccept.tag = section
footerview.btnAccept.addTarget(self, action: #selector(btnAcceptClick), for: .touchUpInside)
return footerview
}单击按钮时
@objc func btnAcceptClick(_ sender: UIButton)
{
let index = IndexPath(row: sender.tag, section: 0)
let cell: TimeSheetFooterTableViewCell = self.tblview.cellForRow(at: index) as! TimeSheetFooterTableViewCell
let comment = cell.lblTimeSheetFooterID.text
print("buttonPressed ! \(sender.tag)")
}如何在注释变量中获取TimeSheetFooterTableViewCell值。提前感谢!
发布于 2020-08-16 23:17:29
您可以在TimeSheetFooterTableViewCell中添加一个接受字符串的闭包。当点击按钮时,使用文本视图的文本调用该闭包。
var acceptButtonTapped: ((String?) -> ())?
@IBAction func btnAcceptClick(_ sender: UIButton) {
acceptButtonTapped?(txtview.text)
}在tableView(_ tableView: UITableView, viewForFooterInSection中,从回调中获取文本。
footerview.acceptButtonTapped = { text in
print(text)
}发布于 2020-08-16 23:12:01
通常是放在单元中的用户交互。并且在tap之后,tapped cell通过回调通知tablewView。
这是一个单元代码:
class TimeSheetFooterTableViewCell: UITableViewCell {
var btnAccept: UIButton!
var lblTimeSheetFooterID: UITextView!
override func awakeFromNib() {
super.awakeFromNib()
btnAccept = UIButton()
btnAccept.addTarget(self, action: #selector(btnAcceptClick), for: .touchUpInside)
}
//Callback for communication between cell and tableView
var btnDidTap: ((String) -> Void)?
@objc func btnAcceptClick(_ sender: UIButton) {
btnDidTap?(lblTimeSheetFooterID.text ?? "")
}
}这是tableView委托中的页脚函数:
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerview = Bundle.main.loadNibNamed("TimeSheetFooterTableViewCell", owner: self, options: nil)?.first as! TimeSheetFooterTableViewCell
let dictFeeStats = arrFinancialYears[section] as? [String: Any]
footerview.btnDidTap = { comment in
print("section number: \(section) DID TAP!")
}
return footerview
}发布于 2020-08-16 23:18:17
请使用footerView(forSection:)方法而不是cellForRow(at:)。
替换:
let cell: TimeSheetFooterTableViewCell = self.tblview.cellForRow(at: index) as! TimeSheetFooterTableViewCell通过以下方式:
let footerView = tblview.footerView(forSection: sender.tag) as! TimeSheetFooterTableViewCellhttps://stackoverflow.com/questions/63438315
复制相似问题