如何使所有部分仅激活一个单选按钮?

Posted

技术标签:

【中文标题】如何使所有部分仅激活一个单选按钮?【英文标题】:how to make active only one radio button for all the sections? 【发布时间】:2017-07-03 08:56:58 【问题描述】:

在这里,我已将其分为多个部分,每个部分都有取决于计数的行,因此对于每一行,单选按钮都将存在,我只需要为所有部分激活一个单选按钮,但我无法实现它和部分的图像将显示here,我的代码是

@IBAction func paymentRadioAction(_ sender: KGRadioButton) 
        let chekIndex = self.checkIsPaymentRadioselect.index(of: sender.tag)
        if sender.isSelected 

         else
            if(chekIndex == nil)
                self.checkIsPaymentRadioSelect.removeAll(keepingCapacity: false)
                self.checkIsPaymentRadioSelect.append(sender.tag)
                self.shippingTableView.reloadData()
            
        
    

这里是索引路径中行的单元格代码

 let cell = tableView.dequeueReusableCell(withIdentifier: "shippingCell", for: indexPath) as! shippingMethodTableViewCell
            var key = self.keys[indexPath.section]
            print(key)
            var a :[Any]  = arrayss[key] as! [Any]
            var dictionary = a[indexPath.row] as! [String:Any]
            let name = dictionary["name"]
            let price = dictionary ["price"]
            cell.methodNameLabel.text = name  as! String
            cell.priceLabel.text = price as! String
            let checkIndex = self.checkIsPaymentRadioSelect.index(of: indexPath.row)
            if(checkIndex != nil)
                cell.radioButton.isSelected = true
            else
                cell.radioButton.isSelected = false
            
            return cell
        

【问题讨论】:

能否说明checkIsPaymentRadioSelect数组的用途? 那是让 bool 知道哪一行@AravindAR 是否知道点击了哪个radioButton?? 是的,选择哪个按钮@AravindAR 一次只需要选择所有radioButton中的一个,对吗?如果我先选择第 2 个,然后选择第 5 个,则只有第 5 个被选中,而第 2 个将被取消选择,对吗? 【参考方案1】:

在这里您不必使用数组来跟踪选定的单选按钮

chekIndex 设为IndexPath 类型的全局变量var chekIndex:IndexPath? 并修改代码如下

   @IBAction func paymentRadioAction(_ sender: KGRadioButton) 
     let center = sender.center;
    let centralPOint = sender.superview?.convert(sender.center, to:self.shippingTableView )
    let indexPath =  self.shippingTableView.indexPathForRow(at: centralPoint)

    if sender.isSelected 

     else
        chekIndex = indexPath
        self.shippingTableView.reloadData()
    



let cell = tableView.dequeueReusableCell(withIdentifier: "shippingCell", for: indexPath) as! shippingMethodTableViewCell
var key = self.keys[indexPath.section]
print(key)
var a :[Any]  = arrayss[key] as! [Any]
var dictionary = a[indexPath.row] as! [String:Any]
let name = dictionary["name"]
let price = dictionary ["price"]
cell.methodNameLabel.text = name  as! String
cell.priceLabel.text = price as! String
if checkIndex == indexPath 
    cell.radioButton.isSelected = true
 else 
    cell.radioButton.isSelected = false


return cell

【讨论】:

能否请您输入您如何声明 checkIndex 的代码? var chekIndex: [Int] = [] 这是我声明的 但后来我改成了 .你说的话也显示错误,如图i.stack.imgur.com/tF371.png 两个单选按钮都被选中是问题吗? 是的,当我在第一部分选择第一个但它也在第二部分中启用第一个

以上是关于如何使所有部分仅激活一个单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章

你如何使单选按钮文本也可点击?

将单选按钮关联到各个组

jquery 在单击单选按钮时选择并激活特定类的所有项目

如何在表单中使用 Active Record 枚举单选按钮?

如何检查“单选按钮”是不是被选中?

如何使单选按钮只读但不禁用?