当我点击swift中viewForFooterInSection上的按钮时,如何获取Cell数据



我是swift的新手,当我点击viewForFooterInSection 中的按钮时,我遇到了问题

我的代码像这个

在视图中查看FooterInSection

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值。提前感谢!

您可以在TimeSheetFooterTableViewCell中添加一个接受字符串的闭包。当点击按钮时,用textview的文本调用闭包。

var acceptButtonTapped: ((String?) -> ())?
@IBAction func btnAcceptClick(_ sender: UIButton) {
acceptButtonTapped?(txtview.text)
}

tableView(_ tableView: UITableView, viewForFooterInSection中,从回调中获取文本。

footerview.acceptButtonTapped = { text in
print(text)
}

使用footerView(forSection:)方法而不是cellForRow(at:)

替换:

let cell: TimeSheetFooterTableViewCell = self.tblview.cellForRow(at: index) as! TimeSheetFooterTableViewCell

带有:

let footerView = tblview.footerView(forSection: sender.tag) as! TimeSheetFooterTableViewCell

通常是放置在单元格中的用户交互。点击后,点击的单元格通过回调通知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
}

最新更新