当我选择一行时,我有一个tableView我希望在我没有选择行时显示底部(tableView外部)的按钮(isEnabled = true)我希望它被设置为禁用(isEnabled = false。我怎样才能做到最好?
目前我有这个逻辑但是当我尝试选择多行时,这给了我一些问题。因为第一个选择将启用它,第二个选择将禁用它。
以下是代码:
我在顶部的var中存储了一个true或false,名为:var someRowSelected = false
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath)
selectedCell?.contentView.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
if(!someRowSelected){
self.someRowSelected = true
nextBtn.isEnabled = true
nextBtn.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
}else{
self.someRowSelected = false
nextBtn.isEnabled = false
nextBtn.backgroundColor = UIColor.darkGray
}
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath)
selectedCell?.textLabel?.textColor = UIColor.darkGray
if(!someRowSelected){
self.someRowSelected = true
nextBtn.isEnabled = true
nextBtn.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
}else{
self.someRowSelected = false
nextBtn.isEnabled = false
nextBtn.backgroundColor = UIColor.darkGray
}
}
我很好奇是否有人可以帮助我。
谢谢! :)
答案 0 :(得分:0)
在这里,我对您的代码进行了一些小改动。看看它是否对你有所帮助。像someRowSelected
var indexPAthSelected : NSIndexPath?
if !someRowSelected {
self.someRowSelected = true
nextBtn.isEnabled = true
nextBtn.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
indexPAthSelected = indexPath
} else if indexPAthSelected == indexPath {
self.someRowSelected = false
nextBtn.isEnabled = false
nextBtn.backgroundColor = UIColor.darkGray
} else {
}
答案 1 :(得分:0)
你的代码很好但是如果只选择了一个单元格它会起作用,因为你实际上正在做的是选择将Bool的值改为true,然后选择false,如果取消选择而不检查所选行的总数。
不改变大量代码的最简单方法是添加一个名为
的新变量var rowsSelected = 0
在你的didSelectRow中添加一个rowsSelected += 1
然后在你的if语句中检查
If rowsSelected is >= 1 {
//enable and un hide your button
}
在deselectRow上执行相反的操作并从rowsSelected -= 1
中减去1,然后从If语句中减去if rowsSelected == 0 { //hide the button and disable it}
我希望这会有所帮助。