14

我有一个收藏视图。我想以编程方式选择一个单元格。这是我使用的代码

[_collectionView selectItemAtIndexPath:[NSIndexPath indexPathForItem:currentSelectedVideo inSection:0] animated:YES scrollPosition:UICollectionViewScrollPositionNone];

由于某种原因,功能:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 

-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

未被调用,因此我用于显示所选单元格的视觉效果未显示在屏幕上。

这是正确的行为吗?

4

4 回答 4

39

你可以做到。

[self.collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
[self collectionView:self.collectionView didSelectItemAtIndexPath:indexPath];

如果只使用 selectItemAtIndexPath:animated:scrollPosition: 方法,不要调用委托方法。如果只使用 collectionView:didSelectItemAtIndexPath: 方法,它不能稳定工作

快乐的代码:)

于 2014-05-24T22:07:37.990 回答
26

是的,这是正确的行为。[selectItemAtIndexPath:animated:scrollPosition:] 的文档说:

此方法不会导致调用任何与选择相关的委托方法。

于 2013-10-14T18:53:42.237 回答
3

Osmenda 用我的自定义集合视图在 Swift 中回答:

self.collectionView(calendarCV, didSelectItemAtIndexPath: indexPath)
于 2016-07-27T19:56:51.357 回答
1

斯威夫特 4:

self.collectionView(daysCollectionView, didSelectItemAt: indexPath)
于 2018-06-19T09:32:01.550 回答