I'm using a custom cell which contains a label and a button. In my button, i've an action associated with it ie when the button is touched the button changes its image and changed to checked image. But i want that action to be call when entire cell is touched.
extension HostOptionViewController: UITableViewDataSource, UITableViewDelegate{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Question.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let question = Question[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionOptionCell") as! ViewCellTableViewCell
cell.setText(option: question)
arrayOfCells.append(cell)
return cell
}
In my Custom cell
import UIKit
class ViewCellTableViewCell: UITableViewCell {
@IBOutlet weak var DataCell: UILabel!
@IBOutlet weak var checkBox: UIButton!
@IBAction func CheckBoxFunc(_ sender: Any) {
if checkBox.isSelected{
checkBox.isSelected = false
}
else{
checkBox.isSelected = true
}
}
func setText(option: Data){
DataCell.text = option.data
}
}
I want to call "CheckBoxFunc" when the cell is touched.
If you want the CheckBoxFunc to be called when selecting cell, then you should call it in didSelectRowAtIndexPath like:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Get your Custom cell here using dequeueReusableCell
// Call the CheckBoxFunc
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell: ViewCellTableViewCell = tableView.cellForRow(at: indexPath)! as! ViewCellTableViewCell
selectedCell.checkBox.addTarget(self, action: #selector(TableViewController.checkBoxTapped(_:)), for: .touchUpInside)
}
func checkBoxTapped(sender:UIButton) {
let question = Question[sender.tag]
print(question)
}
Don't forget to add tag for checkbox button in
cellForRowIndex
method .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.