在单元格标签等于给定字符串的collectionView或TableView上选择行/部分?

Posted

技术标签:

【中文标题】在单元格标签等于给定字符串的collectionView或TableView上选择行/部分?【英文标题】:Select row/Section of on a collectionView or TableView where cell label equals a given string? 【发布时间】:2017-03-08 14:58:31 【问题描述】:

是否可以选择 uitableview / uicollection 视图标签的行或部分等于特定字符串。

举个例子

let array = ["a","b","c","d","e"]

cell.textlabel.text = array[indexPath.row]

然后我选择第 0、1、4 行并将它们添加到保存的数组中

let savedArray = ["a", "b", "e"]

我知道我可以保存 indexPath 并将其添加到字典中,然后以这种方式调用它,但是如果数组更改为

 let array = ["a","f","b","c","d","e"]

然后我不会选择正确的行。

因此,我想做的是搜索 cells.titleLabels.text,如果匹配,则以编程方式选择它。

所以我的问题是如何搜索 cells.titleLabel?

提前致谢

【问题讨论】:

你的意思是下次来的时候要选中之前选中的单元格? 这基本上就是我想要的。集合视图有部分和行 我想你问错问题了!如果问题变成了,我如何跟踪我的 tableView 的状态,那么您可以查看将数据存储在包含标签文本和选择状态的结构/类中。然后,如果有任何变化,您可以重新加载单个行或整个表格,并根据数据设置单元格状态 - 而不是基于您在 reusableTableViewCell 上的临时控件中已有的内容 @Tom 你的collectionView集视图多选吗? 是 @NiravD 集合视图设置为多选 【参考方案1】:

您可以在cellForItemAt方法中比较对象值。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell  
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
    cell.textlabel.text = array[indexPath.row]
    cell.isSelected = savedArray.contains(array[indexPath.row])
    return cell

【讨论】:

【参考方案2】:

在您的cellForIndexAt: CollectionView 委托方法(您设置单元格的位置)中,您可以设置一个条件来检查给定单元格的当前数据项是否在您的savedArray 中 - 如果是,您可以设置该单元格的选定状态。

类似:

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        var cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
        // iterate through saved array and see if your current item is in it
    let savedItems = savedArray.Filter( item -> Bool in
        return item == array[indexPath.row] // this shall return true if item for current cell is in the saved array OR you could do any kind of logical comparison here e.g. item == "random string" 
   )

   if(savedItems.count > 0) 
      // here set the selected state of cell as you wish 
  

        return cell
    

希望这会有所帮助。

【讨论】:

以上是关于在单元格标签等于给定字符串的collectionView或TableView上选择行/部分?的主要内容,如果未能解决你的问题,请参考以下文章

使标签等于 TableView 单元格的标题和副标题

给定具有多行标签的集合视图单元格的宽度,如何获得首选的 AutoLayout 高度?

假设单元格B1为文本100.单元格B2为数值3,则COUNT(B1:B2)等于

假设单元格B1为文本100.单元格B2为数值3,则COUNT(B1:B2)等于

具有固定高度的表格单元格中的自动布局多行标签

在给定的索引路径访问 UICollectionView 单元格