didSelectItemAtIndexPath

didSelectItemAtIndexPath

我试图写
[self collectionView:myCollectionView didSelectItemAtIndexPath:selectedIndexPath]
和UICollectionViewCell在viewDidLoad中的selected = YES,它确实实现了didSelectItemAtIndexPath方法,但未选中该单元格。

我在UICollectionViewCell子类的(void)setSelected:(BOOL)selected中写入了所选状态。加载 View 后,手动选择功能起作用。但是我不能让它在 View 第一次加载后自动选择某些项目。

我试图用以下代码编写代码:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath,都不好。

我发现它先运行viewDidLoaddidSelectItemAtIndexPath,然后运行cellForItemAtIndexPath,似乎我无法在indexPath之前的cellForItemAtIndexPath(我知道)中获取该单元格,因为在此之前该单元格不存在。那么,如何在首次加载UICollectionView中选择一些项目呢?

对不起,我英语不好。提前致谢。

最佳答案

不知道,如果您的问题正确,但是这里有一个可能的解决方案:

例如viewWillAppear:

[self.collectionView reloadData];
NSIndexPath *selection = [NSIndexPath indexPathForItem:THE_ITEM_TO_SELECT
                                             inSection:THE_SECTION];
[self.collectionView selectItemAtIndexPath:selection
                                  animated:YES
                            scrollPosition:UICollectionViewScrollPositionNone];

请记住,以编程方式调用“selectItemAtIndexPath”不会调用相关的委托(delegate)方法。如果需要,必须用代码调用它们。

10-08 08:04