我试图写[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
,都不好。
我发现它先运行viewDidLoad
和didSelectItemAtIndexPath
,然后运行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)方法。如果需要,必须用代码调用它们。