在单元格标签等于给定字符串的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上选择行/部分?的主要内容,如果未能解决你的问题,请参考以下文章
给定具有多行标签的集合视图单元格的宽度,如何获得首选的 AutoLayout 高度?
假设单元格B1为文本100.单元格B2为数值3,则COUNT(B1:B2)等于