我的tableview包含多个部分的自定义单元格。每个部分都有多行。每行包含一个标签和一个按钮(收音机)。我创建了按钮的IBOutlet动作。我的要求是每个部分只选择一个标签。要解决这个问题,我已经实现了以下代码 另一个问题是,如果我选择一个单选按钮并滚动到另一个部分,则单选按钮应显示为已选中。如何解决这个问题,请告诉我。
let position: CGPoint = sender.convertPoint(CGPointZero, toView: table_view)
if let indexPath = table_view.indexPathForRowAtPoint(position)
{
let cell = (table_view.cellForRowAtIndexPath(indexPath)! as! PartCell)
let Section_count = table_view.numberOfSections
let rowCount = table_view.numberOfRowsInSection(indexPath.section)
for j in 0..<Section_count
{
if j==indexPath.section
{
for i in 0..<rowCount
{
if i==indexPath.row
{
cell.btn_radio.selected=true
}
else
{
cell.btn_radio.selected=false
}
}
}
}
答案 0 :(得分:1)
您可以使用以下示例代码解决:
var selectedArray : NSMutableArray!
override func viewDidLoad() {
super.viewDidLoad()
selectedArray = NSMutableArray()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier : String = "reusecell"
let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: identifier)!
if (selectedArray? .contains(indexPath))! {
cell.accessoryType = .checkmark;
}
return cell;
}
func clickAction(_ sender: AnyObject) {
let button = sender as? UIButton
let cell = button?.superview?.superview as? UITableViewCell
let indexPath = tblview.indexPath(for: cell!)
selectedArray! .removeAllObjects()
selectedArray! .add(indexPath)
tblview .reloadData()
print(indexPath?.row)
}