2014-10-20 9 views
8

Ho implementato un UICollectionView che contiene l'elenco di oggetti UIImageView.Come ascoltare i tocchi utente per UICollectionViewCell in iOS?

Desidero che l'utente venga portato su YouTube con URL specifico quando ha toccato un'immagine.

Ma non so come aggiungere tocco listener per ogni UICollectionViewCell:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    var cell: PhotoCell = collectionView.dequeueReusableCellWithReuseIdentifier("PhotoCell", forIndexPath: indexPath) as PhotoCell 
    cell.loadImage(thumbnailFileURLs[indexPath.row], originalImagePath: originalFileURLs[indexPath.row]) 

    return cell 
    } 

classe mia fotocellula ha una variabile membro che contiene l'URL di YouTube.

Per ogni oggetto fotocellula, quando viene premuto, voglio la mia app per inviare l'utente a sito youtube.com o APP (se installato)

risposta

28

è necessario implementare il metodo UICollectionViewDelegate protocollo collectionView(_:didSelectItemAtIndexPath:). Quando si preme una delle celle della vista raccolta, viene chiamato questo metodo. Ecco l'esempio di implementazione

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    let url = thumbnailFileURLS[indexPath.item] 
    if UIApplication.sharedApplication().canOpenURL(url) { 
     UIApplication.sharedApplication().openURL(url) 
    } 
} 

A proposito, non so dove si ottiene url. Quindi ho improvvisato un po ':)

+0

A proposito, qual è la differenza tra indexPath.item e indexPath.row – malhobayyeb

+2

Non c'è differenza. È semantico. Quando si ha a che fare con 'UITableView's si dice" row "e quando si ha a che fare con' UICollectionView's si dice "item" – mustafa

+0

Questo va in viewDidLoad() – tccpg288

Problemi correlati