gpt4 book ai didi

ios - 如何从 tableview 单元格中收集多个动态值并存储在数组中

转载 作者:行者123 更新时间:2023-11-28 13:33:43 25 4
gpt4 key购买 nike

我正在使用复选标记功能选择表格 View 单元格,并且必须将该值保存在一个数组中(仅复选标记单元格名称)以及我必须在 url 参数 (POST) 中传递的那些数组值(示例:Dhoni、Kohili、Rohit )

这是我必须保存“SwithTableView”单元格数据的代码

var checked = [Bool]()


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

if tableView == switchTableView{
return self.arrdata20.count
} else
{
return self.arrdata.count
}

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

if (tableView == self.switchTableView)
{

let cell:switchTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell1") as! switchTableViewCell

cell.nameLbl.text = (arrdata20[indexPath.row].name)
print(cell.nameLbl.text)

if (arrdata20[indexPath.row].emp_id == DataManager.sharedInstance.empID)
{
cell.isHidden=true
}
else{
cell.isHidden=false
}
if checked[indexPath.row] == false{
cell.accessoryType = .none


} else if checked[indexPath.row] {
cell.accessoryType = .checkmark


}


return cell

}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

switchTableView.deselectRow(at: indexPath, animated: true)
if let cell = switchTableView.cellForRow(at: indexPath as IndexPath) {

if cell.accessoryType == .checkmark {
cell.accessoryType = .none
checked[indexPath.row] = false
print(indexPath.row)

} else {
cell.accessoryType = .checkmark
checked[indexPath.row] = true
}
}
}

最佳答案

一个额外的数组来保持选择是不好的做法,并且很难维护,例如,如果可以插入、删除或移动单元格。

强烈建议将信息存储在数据模型中

在你的结构中添加一个成员 isSelected

struct Jsonstruct20 : Decodable {
let name, emp_id : String

var isSelected = false

private enum CodingKeys : String, CodingKey { case name, emp_id }
}

<罢工>

<罢工>
var checked = [Bool]()

<罢工>

cellForRow根据 isSelected 设置复选标记(我删除了多余的代码)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

guard tableView == self.switchTableView else { return UITableViewCell() }

let cell = tableView.dequeueReusableCell(withIdentifier: "cell1") as! switchTableViewCell
let item = arrdata20[indexPath.row]
cell.nameLbl.text = item.name
print(cell.nameLbl.text)
cell.accessoryType = item.isSelected ? .checkmark : .none
cell.isHidden = item.emp_id == DataManager.sharedInstance.empID
return cell
}

didSelectRowAt只需切换 isSelected并重新加载行以更新单元格

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
guard tableView == self.switchTableView else { return }
tableView.deselectRow(at: indexPath, animated: true)
arrdata20[indexPath.row].isSelected = !arrdata20[indexPath.row].isSelected
// or in Swift 4.2+ arrdata20[indexPath.row].isSelected.toggle()
tableView.reloadRows(at: [indexPath], with: .none)
}

获取选中单元格的所有名称过滤数据源数组

let selectedNames = Array(arrdata20.lazy.filter{$0.isSelected}.map{$0.name})

关于ios - 如何从 tableview 单元格中收集多个动态值并存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56972002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com