2017-10-06 1 views
0

Je dois être en mesure d'obtenir le indexPath.row pour mon UICollectionView dans la fonction de validation pour Peek et Pop.IndexPath dans viewControllerToCommit Fonction

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 

    } 

que je dois faire cela parce que chaque ligne de la UICollectionView ouvre un contrôleur de vue différent et doit transmettre des informations pour des lignes différentes. Des idées?

Répondre

0

La méthode recommandée est de présenter l'objet viewControllerToCommit qui devrait déjà être rempli de l'élément bien de votre UICollectionView:

func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
    guard let indexPath = collectionView.indexPathForItem(at: location), let cell = collectionView.cellForRow(at: indexPath) as? YOUR_CELL_CLASS else { 
     return nil 
    } 

    previewingContext.sourceRect = cell.frame 

    let viewController = YOUR_VIEW_CONTROLLER_CLASS() 
    viewController.yourObject = cell.yourObject 
    return viewController 
} 

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
    navigationController?.pushViewController(viewControllerToCommit, animated: true) 
}