gpt4 book ai didi

objective-c - 如何确定当前可见的 UICollectionView 单元格的 indexPath

转载 作者:行者123 更新时间:2023-12-04 02:59:49 24 4
gpt4 key购买 nike

我想显示一些特定于单元格的文本,但我无法从 Collection View 中提取可见单元格。

最有帮助的是这些:

how to access from UICollectionViewCell the indexPath of the Cell in UICollectionView

detecting when an iOS UICollectionCell is going off screen

较低的 Collection View (self addSubview)包含可能的项目。上层(self addSubview)包含来自下层的选择。用户按下一个按钮(再次自己添加 subview ),下方的 View 滚动到被遗忘,上方的 View 展开,使得一个单元格填满屏幕。所有阵列构建和显示工作正常。没有 *.nibs。

无法确定应用向用户展示的是哪个单元格。

尝试 #1:首先,我尝试在正常操作的同时填充 UILabel。按下按钮和 cellForItemAtIndexPath:

if (cv.tag == UPPER_CV_TAG) {
UICollectionViewLayoutAttributes *itemAttributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
NSIndexPath *tempIndexPath;
tempIndexPath = itemAttributes.indexPath;
NSLog(@"cellForItem indexPath %@",indexPath);
NSLog(@"layout indexPath %@",tempIndexPath);
}

如你所料响应:

cellForItem indexPath <blah blah> 2 indexes [0, 0]
layout indexPath < > 2 indexes [0, 0]

cellForItem indexPath < > 2 indexes [0, 1]
layout indexPath < > 2 indexes [0, 1]

cellForItem indexPath < > 2 indexes [0, 2]
layout indexPath < > 2 indexes [0, 2]

当旋转结束时,Cell 0 正确地占据了中心舞台。不幸的是,单元格 2 的描述也是如此。向左/向右滚动,单元格会相应更改,相应的文本不会。它保持不变:映射到单元格 2 的内容。

显然我将错误的索引传递给描述数组。

尝试 #2:好的,很好。我将询问一个我知道当前可见单元格占据的点并从中进行推理。

CGPoint p = CGPointMake(512, 456);
NSIndexPath *theCellsIndexPath = [self.upper_collectionView indexPathForItemAtPoint:p];
NSLog(@"theCellsIndexPath=%d",theCellsIndexPath.item);

没有雪茄:

cellForItem indexPath < > 2 indexes [0, 0]
theCellsIndexPath=0

cellForItem indexPath < > 2 indexes [0, 1]
theCellsIndexPath=0

cellForItem indexPath < > 2 indexes [0, 2]
theCellsIndexPath=0

当我将 512,456 更改为其他可能点时,“0”没有变化。当我使用 layoutAttributes 确定单元格在 View 中的位置时,“0”没有变化,以防万一。不,那个细胞是一个非常非常大的目标。我没有错过。

尝试 #3:也许我工作太努力了。我会把发生的事情困在里面

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath  {
}

然后顺其自然。

没有。它永远不会被调用。

尝试 #4:因为我不知道屏幕上单个单元格的 indexPath(但 collectionView 知道),我想我可以使用 didEndDisplayingCell 遍历所有单元格,直到我点击“Bingo!”这是粗略的,表明程序员有错误。

我很高兴 collectionView 逻辑缓冲了三个单元格。可能会改善用户体验或其他内容。但是它结束的地方——0——不是我的数组索引最后知道它的地方——2。

我没有阅读文档的哪一部分?

最佳答案

What part of the docs didn’t I read?

UICollectionView有一个方法叫做 indexPathsForVisibleItems .请务必通读它,看看您还可以从 API 中使用什么。

关于objective-c - 如何确定当前可见的 UICollectionView 单元格的 indexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com