选择 UITableView 中的所有行,并在数组中附加标签
Posted
技术标签:
【中文标题】选择 UITableView 中的所有行,并在数组中附加标签【英文标题】:Selecting All Rows In UITableView , and Appending labels in Array 【发布时间】:2018-06-16 17:44:16 【问题描述】:我可以在点击按钮时选择所有行,但是我想将该行中的标签附加并删除到我的数组中
我可以在didSelectRowAt
和“didDeselectRowAt”中分别添加和删除来实现这一点!
我正在使用的代码在 TableView 函数之外。
func selectAllRows()
for section in 0..<tableView.numberOfSections
for row in 0..<tableView.numberOfRows(inSection: section)
tableView.selectRow(at: IndexPath(row: row, section: section), animated: false, scrollPosition: .none)
let cell = tableView.cellForRow(at: IndexPath(row: row, section: section)) as? CheckableTableViewCell
classesArray.append((cell?.textLabel?.text)!)
【问题讨论】:
不要依赖 UI,要依赖你的模型。我的意思是你自己写了tableView:cellForRowAtIndexPath:
,所以你知道你在cell.textLabel.text
中放了什么,只是为了检索值。另外,请注意,在您的代码中,cell
可能为 nil(请阅读 cellForRow(at:)
的文档),因为它不可见。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! CheckableTableViewCell 让 classess = classes[indexPath.row]["classes"] as?细绳 ?? "" 让sections = classes[indexPath.row]["section"] as?细绳 ?? "" cell.textLabel?.text = "(classess) - (sections)" 返回单元格
【参考方案1】:
let cell = tableView.cellForRow(at: IndexPath(row: row, section: section)) as? CheckableTableViewCell
这会导致问题,因为 cell
可能是 nil
。
参见func cellForRow(at indexPath: IndexPath) -> UITableViewCell?
的文档
返回值 表示表格单元格的对象,如果单元格不可见或 indexPath 超出范围,则为 nil
不要依赖 UI,要依赖你的模型。
在tableView(_ tableView:, cellForRowAt:)
中,您可以:
let classess = classes[indexPath.row]["classes"] as? String ?? ""
let sections = classes[indexPath.row]["section"] as? String ?? ""
cell.textLabel?.text = "(classess) - (sections)"
对classesArray.append((cell?.textLabel?.text)!)
做同样的事情:
classesArray.append("(classess) - (sections)") //recalculate it like before
【讨论】:
谢谢@Larme 这帮了我 func selectAllRows() for section in 0..以上是关于选择 UITableView 中的所有行,并在数组中附加标签的主要内容,如果未能解决你的问题,请参考以下文章
改变UITableView所有行的accessorytype
无法根据来自 UIPickerView 的选择器更新 UITableView 数据
在特定行选择上更改 UITableView 所有行的标签颜色