swift 中单选按钮和复选框的 Tableview 多部分按钮操作

Tableview multiple sections button action for radio btn and checkbox in swift

在我的应用程序中有多个部分,即复选框和单选按钮。

在 tableview 单元格中,我创建了两个 UIButton,如果是复选框或单选按钮,它会根据响应而变化。

这是我的代码。

var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
    var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()
    var radioControllerDrink : SSRadioButtonsController = SSRadioButtonsController()
    var radioControllerSides : SSRadioButtonsController = SSRadioButtonsController()
    var radioControllerOption : SSRadioButtonsController = SSRadioButtonsController()

func numberOfSections(in tableView: UITableView) -> Int {
        return table_data.count
    }


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
        cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
        print(table_data[indexPath.section].customize[indexPath.row])

        switch indexPath.section {
        case 2:
            radioControllerChoice.addButton(cell.radioBtn)
        case 3:
            radioControllerDip.addButton(cell.radioBtn)
        case 4:
            radioControllerDrink.addButton(cell.radioBtn)
        case 5:
            radioControllerSides.addButton(cell.radioBtn)
        case 6:
            radioControllerOption.addButton(cell.radioBtn)
        default:
            print("no case found")
        }

        switch Int(table_data[indexPath.section].customize[indexPath.row]) {
        case 1:
            cell.radioBtn.isHidden = true
            cell.checkBoxBtn.isHidden = false
            break
        case 2:
            cell.radioBtn.isHidden = false
            cell.checkBoxBtn.isHidden = true
            break
        default:
            print("Invalid choose")

        }
       cell.radioBtn.addTarget(self, action: #selector(ViewController.didSelectButton), for: .touchUpInside)
        cell.radioBtn.tag = indexPath.row
        cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)
        return cell

    }

table_data 是数组,我使用 struct 从 Web 服务获取数组值。

我的问题是:

为单选按钮编写按钮操作。

 func didSelectButton(selectedButton: UIButton?)
    {
        print("selectedButton",(selectedButton?.tag)!)
        let tagVal = (selectedButton?.tag)!
        print("tagVal",tagVal)

    }

在按钮点击动作选择中,表格视图中的一个单独部分显示在图像中。 在那个部分想要 select 和 deselect 单选按钮。当 select 起司时它会 selected,然后我将 select 三层起司意味着,起司自动 deselect。只想 select 该部分中的一项。

每个部分都有一个带有单选按钮的不同项目。
如果 selected 一个单选按钮它将 select,在 selected 任何其他单选按钮之后意味着上一个 selected 按钮想要自动取消 select。它应该只在单选按钮的表视图的每个部分中发生。

无论项目 select 想要将其存储在字符串中。

具有多个 selection 的复选框需要相同的按钮操作。

func checkBoxBtnaction(sender:UIButton)
 {


 }

在此处输入图片描述

帮帮我。提前致谢。

我建议采用以下方法:

1) 为按钮创建模型

2) 取一个定义单选案例的枚举,勾选框

3) 在您的单元格中创建一个普通按钮 UI

4) 根据枚举状态将按钮修改为单选按钮或复选框,从您的 UI 我想更改按钮顶部的图像应该可以解决问题

这样两个按钮将具有相同的操作处理程序,然后您可以根据模型枚举值决定要执行的操作

为单选按钮使用 this 库并以此更新您的代码并尝试

    var radioButtonController = SSRadioButtonsController()

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
            cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
            print(table_data[indexPath.section].customize[indexPath.row])

            radioButtonController.addButton(cell.radioBtn)

            switch Int(table_data[indexPath.section].customize[indexPath.row]) {
                case 1:
                    cell.radioBtn.isHidden = true
                    cell.checkBoxBtn.isHidden = false
                    break
                case 2:
                    cell.radioBtn.isHidden = false

                    cell.checkBoxBtn.isHidden = true
                    break
                default:
                    print("Invalid choose")

                }
                cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
                cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)

                return cell

            }

编辑:

var radioControllerChoice : SSRadioButtonsController = SSRadioButtonsController()
var radioControllerDip : SSRadioButtonsController = SSRadioButtonsController()

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:CustomiseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Customise") as! CustomiseTableViewCell
    cell.name.text?=table_data[indexPath.section].menu_name[indexPath.row]
    print(table_data[indexPath.section].customize[indexPath.row])


    switch indexPath.section {
    case 1:
        radioControllerChoice.addButton(cell.radioBtn)
    case 2:
        radioControllerDip.addButton(cell.radioBtn)
    default:
        print("no case found")
    }
    switch Int(table_data[indexPath.section].customize[indexPath.row]) {
    case 1:
        cell.radioBtn.isHidden = true
        cell.checkBoxBtn.isHidden = false
        break
    case 2:
        cell.radioBtn.isHidden = false

        cell.checkBoxBtn.isHidden = true
        break
    default:
        print("Invalid choose")

    }
    cell.radioBtn.addTarget(self, action: #selector(ViewController.radioBtnaction), for: .touchUpInside)
    cell.checkBoxBtn.addTarget(self, action: #selector(ViewController.checkBoxBtnaction), for: .touchUpInside)

    return cell

}