tableView中的每个单元格都有各种属性:
class: Item
// properties
var name: String
var photo: UIImage?
var category: String
var instructions: String
var completed = false
(一切都已初始化)
我的tableView数组是:
items = [Item]()
当Item.complete为true时,单元格将有一个复选标记附件,否则它将具有.none
我想使用UIButton(在单独的VC中)为tableView中的每个单元格生成Item.complete = false,从而删除所有复选标记并基本上重置数据。
我的项目:项目数组是可变的,因为用户可以选择添加或删除数组中的任何行。
我希望UIButton(位于单独选项卡中的单独VC上)转到tableView并进行更改。
如何使用UIButton将每个单元格.complete属性更改为false,以便我可以删除每个单元格上的复选标记?
答案 0 :(得分:0)
循环items items并将property设置为false
for i in 0..<items.count {
items[i].completed = false
}
完成后,重新加载您的tableview:
tableView.reloadData()
添加如果您的问题是如何从单独的VC中执行此操作,那么我建议您在Swift中学习授权,这里是post
答案 1 :(得分:0)
您也可以使用.map
功能。
您可以直接在Playground页面中运行它:
class Item: NSObject {
var name: String = ""
var completed: Bool = false
}
// declare items array
var items = [Item]()
// fill with 20 Items,
// setting .completed for every-other one to true
for n in 0...19 {
let newItem = Item()
newItem.name = "item-\(n)"
newItem.completed = n % 2 == 0
items.append(newItem)
}
// print out the items in the array
print("Original values")
for item in items {
print(item.name, item.completed)
}
print()
// -- this is the .map function
// set .completed to false for every item in the array
items = items.map {
(item: Item) -> Item in
item.completed = false
return item
}
// -- this is the .map function
// print out the items in the array
print("Modified values")
for item in items {
print(item.name, item.completed)
}
然后,当然,请在桌面上拨打.reloadData()
。
答案 2 :(得分:0)
有一个函数可以为数组的每个项目执行闭包
items.forEach{ $0.completed = false }
tableView.reloadData()