ios - UICollectionView 滚动到特定单元格

标签 ios uicollectionview swift2 uicollectionviewcell

我尝试创建一个 UICollectionView谁应该在特定的单元格中打开。

我的方法是存储所有单元格:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) ->
        UICollectionViewCell {
  // my code
  cells.append(cell)
  return cell
}

然后在 viewDidAppear 中找到所需的单元格:
let result:[MyCell] = cells.filter{ $0.myProperty!.uuid == selectedUUID }

不幸的是,在单元格数组中找不到所需的单元格,因为尚未存储所有单元格。

我是朝着正确的方向前进还是需要不同的解决方案?

编辑:删除误导性信息

最佳答案

不要使用细胞本身。

您的单元格正在显示数据,对吗?他们一定。该数据(可以是数字、文本或图像,任何东西)应该是一个自定义对象。

例如,您正在显示动物列表。

所以你有 Animal类,具有不同的属性( Sizeweightage )。再一次,都是一个例子。也许您正在显示具有名字、姓氏等的学生列表。假设我们正在使用 Animal .

你有一个 Animal 对象数组,你可以有 1 个,或 4 个,或 234234,没关系。该阵列可以容纳任意数量的动物。但是你只有一个数组。

您的 Collection View (或表格 View )需要为每一行创建一个单元格。几排?!很简单,其他方法告诉我们每个部分有特定的行数。假设我们只有一个部分。

你如何定义行?你给他一个号码。什么号码?数组中的动物数量。例如,5。或者,更好的是,myAnimalsArray.Count .现在如果你有 20 只动物,你就会有 20 个细胞。如果你有 3 只动物,你将有 3 个细胞。

好的,现在到单元格,你知道你有多少,因此 cellForRow 将创建 X 个单元格,X 是你的数组的计数。

你可能会有一个简单的单元进行测试,比如

cell.title = animal.name

然后返回单元格。这里都是伪代码,但你明白了。

现在回答您的实际问题

我写了所有这些,因为根据您在其他答案中的其他评论,您似乎很困惑。

你有你的动物数组(数据),但还没有细胞。例如,您想从名字以 E 开头的动物开始。好吧,在阵列上所有动物之后,您需要找到以 E 开头的动物(或您可能喜欢的任何其他过滤器)。您可以通过搜索方法找到它。完成后,您将知道数组中动物的索引。这是数组项目编号 23,它是大象。

创建 NSIndexPath具有第 0 节和索引 23 的对象(因为您的过滤器发现它是第 23 项,我只是在使用示例),然后将该 indexPath 对象传递给 scroll method of the collectionview .

你很好;)

ViewDidLayoutSubviews 中执行此操作或 viewDidAppear . (第一个更好)。但是您必须在加载动物数组后执行此操作,否则您将没有任何数据要过滤。

一旦你调用了上面链接中的方法,你的collectionview就会滚动,如果你做得够快,它将在那个索引处加载,而不是在索引0处加载。

关于ios - UICollectionView 滚动到特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765873/

相关文章:

objective-c - NSRegularExpression 错误 : Get into when false

Swift 为默认返回值生成错误

swift - 在 Swift 中向数组中插入一个新元素

ios - PHP/MySQL : Obtain two items from table in join using different criteria

ios - 使用 EXIF/geotag 信息更新内存中的 iOS UIImage

ios - Swift 4 - 如何从 UICollectionViewCell 中嵌套的按钮以编程方式激活 segue

ios - 在 UICollectionView 中加载和显示随机单元格

ios - UICollectionView补充 View 如何正确插入或删除

ios - Protocol 只能作为泛型约束,因为它有 Self 或 associatedType 要求

ios - 当它是一个单独的 Swift 文件时,从 TableViewDataSource 中删除或添加单元格