我已经使用字典完成了此操作。如何在每次单击时在onClick方法中更改bool值。 //委托方法
getClass().getResource("/com/example/p2/abc.properties")
//在表格视图中
func onClick(index:Int){
array[index]["status"] = true
TableView.reloadData()
}
答案 0 :(得分:0)
为什么将状态存储在变量中时为什么要创建字典?
var status: Bool! = true
func onClick(index:Int){
status = status == true ? false : true
tableView.reloadData()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TableViewCell
let dict = array[indexPath.row]
cell.lab.text = dict["name"] as! String
let status:Bool = status
cell.index = indexPath.row
cell.btn.setImage(UIImage(named: status == true ? "checked" : "unchecked"), for: .normal)
cell.delegate = self
return cell
}
答案 1 :(得分:0)
来自:Matt Neuburg书“ iOS 13使用Swift编程基础知识”:
! (不是) !一元运算符反转 Bool 的真值,并将其用作前缀。如果ok为真,则!ok为假,反之亦然。
一种常见的情况是,我们将 Bool 存储在var变量中的某个位置,并且我们希望反转它的值-也就是说,如果它是false,如果为true,则为false。 !运营商解决了问题;我们获取变量的值,用!取反,然后将结果分配回变量:
v.isUserInteractionEnabled = !v.isUserInteractionEnabled
但是,这很麻烦且容易出错。从 Swift 4.2 开始,有一种更简单的方法-在 Bool 变量上调用 toggle 方法:
v.isUserInteractionEnabled.toggle()
答案 2 :(得分:-1)
如果您使用的是 Swift 4.2 ,只需toggle:
func onClick(index:Int){
array[index]["status"]?.toggle()
tableView.reloadData()
}
如果您仍在 Swift 3 上,则可以在Bool之前使用取反运算符!
:
func onClick(index:Int){
array[index]["status"] = !array[index]["status"]!
tableView.reloadData()
}
(最后的!
会强制取消包装值,因为它是可选的)
为避免强制展开可选内容,请按如下所示定义toggle
函数,并像在Swift 4.2中一样使用它:
extension Bool {
mutating func toggle() {
self = !self
}
}