简体   繁体   中英

How can I call the action of a checkbox button when the cell is touched?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM