tutorial source how example data collection ios swift uicollectionview nsindexpath

ios - source - uicollectionview swift 4



Cómo obtener un elemento seleccionado en vista de colección usando indexPathsForSelectedItems (4)

indexPathsForSelectedItems devuelve una matriz de indexPaths (ya que puede haber varios elementos seleccionados) por lo que debe usar:

let indexPaths : NSArray = self.collectionView!.indexPathsForSelectedItems() let indexPath : NSIndexPath = indexPaths[0] as NSIndexPath

(Probablemente debería probar para ver si se seleccionan varios elementos y manipularlos en consecuencia).

Tengo una collectionView de fotos y quiero pasar la foto que fue cliqueada a un detailViewControler.

Los datos de la colección provienen de:

var timeLineData:NSMutableArray = NSMutableArray ()

Me gustaría utilizar el método de preparación para segue.

Mi problema es cómo obtener el buen indexPath de la celda a la que se hizo clic.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue == "goToZoom" { let zoomVC : PhotoZoomViewController = segue.destinationViewController as PhotoZoomViewController let cell = sender as UserPostsCell let indexPath = self.collectionView!.indexPathForCell(cell) let userPost = self.timeLineData.objectAtIndex(indexPath!.row) as PFObject zoomVC.post = userPost } }


El argumento del remitente en prepareForSegue: remitente: será la celda si conectó la segue de la celda. En ese caso, puede obtener indexPath de la celda,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "showZoomController" { let zoomVC = segue.destinationViewController as PhotoZoomViewController let cell = sender as UICollectionViewCell let indexPath = self.collectionView!.indexPathForCell(cell) let userPost = self.timeLineData.objectAtIndex(indexPath.row) as PFObject zoomVC.post = userPost } }


Swift 3.0

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == “segueID”{ if let destination = segue.destination as? YourDestinationViewController{ let cell = sender as! UICollectionViewCell let indexPath = myCollectionView.indexPath(for: cell) let selectedData = myArray[(indexPath?.row)!] // postedData is the variable that will be sent, make sure to declare it in YourDestinationViewController destination.postedData = selectedData } } }


En veloz 3:

let index = self.collectionView.indexPathsForSelectedItems?.first