2013-10-14 93 views
11

我有一個集合視圖。我想以編程方式選擇一個單元格。這是代碼我使用UICollectionView selectItemAtIndexPath不調用didSelectItemAtIndexPath

[_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 

不叫,因此我使用用於示出所選擇的小區的視覺效果沒有顯示在屏幕上。

這是一個正確的行爲?

回答

21

是的,這是正確的行爲。文檔 [selectItemAtIndexPath:動畫:的scrollPosition:]說:

此方法不會導致調用任何選擇相關的委託方法。

32

你可以做到。

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

如果僅使用selectItemAtIndexPath:animated:scrollPosition:方法,請不要調用委託方法。 如果僅使用的CollectionView:didSelectItemAtIndexPath:方法,它不工作STABIL

幸福代碼:)

+0

是的,你是正確的。我這樣做,它很好。 – bashan

+0

謝謝osmenda,是偉大的作品 –

+1

這應該被認爲是一個答案,而不是完美的方式(手動調用委託方法),它很好地工作,並已多次幫助我! – SmokersCough

2

Osmenda在斯威夫特的答案與我的自定義集合觀點:

self.collectionView(calendarCV, didSelectItemAtIndexPath: indexPath) 
相關問題