我有一个表视图,其中包含带复选框的项目。用户可以选择任何项目(也可以选择多项选择),他们可以按Proceed按钮进行支付。
我使用了一个按钮作为复选框。因此,如果用户按下按钮,或者他们选择了一个表行,则两个案例都会处理该函数。
所以现在,我的继续按钮开始为禁用。每当用户使用didSelectRowAt
方法或复选框按钮操作按任何项目时,只有启用了Proceed按钮。
但是现在,每当我按下第一个项目或第一个复选框按钮时,我的继续按钮都没有启用。如果我按第二个项目或第二个复选框,它可以工作。我不知道为什么。
以下是我的didSelectRowAt
代码和我的复选框按钮操作代码:
#Updated:
var selectedIndexPathArray = Array<NSIndexPath>()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "itemcell", for: indexPath) as! itemTableViewCell
cell.checkboxBtn.isUserInteractionEnabled = false
if selectedIndexPathArray.contains(indexPath as NSIndexPath) {
cell.checkboxBtn.setImage(UIImage(named: "enabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = true
} else {
cell.checkboxBtn.setImage(UIImage(named: "disabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = false
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if selectedIndexPathArray.contains(indexPath as NSIndexPath) {
let index = selectedIndexPathArray.index(of: indexPath as NSIndexPath)
selectedIndexPathArray.remove(at: index!)
} else {
selectedIndexPathArray.append(indexPath as NSIndexPath)
}
tableView.reloadData()
}
提前致谢!
答案 0 :(得分:0)
是的,因为如果您第一次点击按钮,则会调用proceedbutton
,此时selectedIndexPathArray
将没有任何值意味着无。
首次执行 else 部分。
.
.
.
else {
selectedIndexPathArray.append(indexPath! as NSIndexPath)
cell?.checkboxBtn.setImage(UIImage(named: "disabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = false
}
当你按下agin然后你的 if 条件为真,那么启用
答案 1 :(得分:0)
在您的proceed()函数的if-else条件上尝试此操作。
if selectedIndexPathArray.contains(indexPath! as NSIndexPath) {
electedIndexPathArray.remove(at: index!)
cell?.checkboxBtn.setImage(UIImage(named: "disabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = false
}
else {
selectedIndexPathArray.append(at: index!)
cell?.checkboxBtn.setImage(UIImage(named: "enabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = true
}
答案 2 :(得分:0)
删除单元格中按钮的选择器,按钮的默认设置userInteraction为false。不需要每次都设置它。在didSelectRow上执行所有操作。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: itemscell, for: indexPath) as! itemsTableViewCell
cell?.checkboxBtn.isUserInteractionEnabled = false
if selectedIndexArray.contains(indexPath.row) {
cell.checkboxBtn.setImage(UIImage(named: "enabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = true
} else {
cell.checkboxBtn.setImage(UIImage(named: "disabled"), for: .normal)
proceedbutton.isUserInteractionEnabled = false
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if selectedIndexArray.contains(indexPath.row) {
let index = selectedIndexPathArray.index(of: indexPath.row)
selectedIndexArray.remove(at: index!)
} else {
selectedIndexArray.append(indexPath.row)
}
tableView.reloadData()
}