选择 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) -&gt; 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 所有行的标签颜色

从 UITableView 中删除所有行

UITableview 选择行按钮应取消选择另一行中的相同位置

如何对 JSON 数组进行排序并在 UITableView 中呈现