如何使所有部分仅激活一个单选按钮?
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 两个单选按钮都被选中是问题吗? 是的,当我在第一部分选择第一个但它也在第二部分中启用第一个以上是关于如何使所有部分仅激活一个单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章