2013-10-14 7 views
11

Ho una visione di raccolta. Vorrei selezionare una cella al livello di programmazione. Questo è il codice che usoUICollectionView selectItemAtIndexPath non chiamare didSelectItemAtIndexPath

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

Per qualche ragione le funzioni:

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

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

non sono chiamati e, pertanto, l'effetto visivo che sto usando per mostrare la cella selezionata non viene visualizzata sullo schermo.

E 'un comportamento corretto?

risposta

21

Sì, questo è un comportamento corretto. Documentazione per [selectItemAtIndexPath: animato: scrollPosition:] dice:

Questo metodo non causa alcun metodi delegato di selezione legati da chiamare.

32

Si può fare.

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

se l'uso solo selectItemAtIndexPath: animato: scrollPosition: metodo, non chiamare il metodo delegato. se l'uso solo CollectionView: didSelectItemAtIndexPath: metodo, non funzionano stabil

codice felice :)

+0

Sì, lei ha ragione. L'ho fatto in questo modo e funziona benissimo. – bashan

+0

Grazie osmenda, è grandi opere –

+1

Questo dovrebbe essere votato come una risposta così, pur non il modo migliore (chiamando un metodo delegato manualmente) funziona bene e mi ha aiutato in numerose occasioni! – SmokersCough

2

risposta di Osmenda a Swift con la mia visione raccolta personalizzata:

self.collectionView(calendarCV, didSelectItemAtIndexPath: indexPath) 
Problemi correlati