作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了一个tableviewcell,里面有一个按钮。我在 tableviewcell.swift 类中连接了按钮的 IBAction。然后我创建了一个委托(delegate)并访问了 viewcontroller 类中的按钮触摸操作,就像这样......
func optionTap(cell: SlideUpTableViewCell) {
if let indexPath = tableview?.indexPath(for: cell) {
}
}
但我想要实现的是,我希望一次只选中一个复选框按钮。我有 3 行,现在我可以点击 3 个按钮中的每一个,而我只想一次点击 1 个按钮。也就是说,如果我点击第一个单元格上的按钮,然后点击第二个单元格中的按钮,那么应该自动取消选择第一个单元格按钮。简而言之,正常的单选是如何工作的……
我已经试过了......但是它不起作用......
func optionTap(cell: SlideUpTableViewCell) {
if let indexPath = tableview?.indexPath(for: cell) {
if selectedArrayIndex.contains(indexPath.row) {
selectedArrayIndex.remove(at: selectedArrayIndex.index(of: indexPath.row)!)
cell.checkBobButton.tintColor = ThemeManager.current().inactiveGrayColor
cell.checkBobButton.setImage(UIImage(named: "circle_stroke"), for: .normal)
} else {
selectedArrayIndex.append(indexPath.row)
cell.checkBobButton.tintColor = ThemeManager.current().secondaryColor
cell.checkBobButton.setImage(UIImage(named: "circle_tick"), for: .normal)
}
}
}
编辑 1:这是 cellForRow..
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: SlideUpTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellID) as! SlideUpTableViewCell
cell.delegate = self
cell.selectionStyle = .none
cell.headingLabel.text = self.arrData[indexPath.row].heading
cell.subHeadingLabel.text = self.arrData[indexPath.row].subHeading
return cell
}
EDIT 2 这就是 UI 的外观..
最佳答案
首先,您不需要按钮操作。按照以下步骤轻松完美地编码:
在你的 Controller 中取一个 var var selectedIndex = -1
//-1 如果没有选择任何索引,如果你想默认选择任何选项然后相应地改变它。
使用tableView
委托(delegate)方法didSelectRowAt indexPath
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
selectedIndex = indexPath.row
myTblView.reloadData()
}
现在切换 btn 只需在 cellForRow
中执行此操作即可。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! Mycell
:
cell.myBtn.isSelected = indexPath.row == selectedIndex
:
return cell
}
现在在 Storyboard中,为选定状态和默认状态分配按钮图像。
关于ios - 无法获得单选复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160574/
我是一名优秀的程序员,十分优秀!