2017-10-18 6 views
0

Je rencontre un léger problème avec une application de liste de contrôle de base que je construis.Détermination de la cellule à partir d'un UILongPressRecognizer pour une section

Sur un robinet d'une cellule de vue de la table, je segue à mon NewTaskViewController en utilisant prepare(for segue):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "AddTask" { 
     let nav = segue.destination as! UINavigationController 
     let newTaskVc = nav.topViewController as! NewTaskViewController 
     newTaskVc.delegate = self 
     newTaskVc.managedContext = managedContext 

J'ai également effectuer une Segue sur un UILongPressGestureRecognizer que j'ai ajouté à ma cellule. À long pressurage doit enchaîner au même NewTaskViewController mais cette fois en ajoutant TaskItem de la cellule à sa taskToEdit propriété

} else if segue.identifier == "EditTask" { 
     let nav = segue.destination as! UINavigationController 
     let editTaskVc = nav.topViewController as! NewTaskViewController 
     editTaskVc.delegate = self 
     editTaskVc.managedContext = managedContext 
     editTaskVc.taskToEdit = ? 

Comme j'utilise un UILongPressRecognizer, je me bats pour travailler comment je déterminer le chemin d'index de la cellule pressé longtemps pour que je puisse passer l'article correct à travers.

Essentiellement, comment identifier une cellule de vue de table à partir d'un outil de reconnaissance de mouvements?

Merci d'avance!

Répondre

1

Eh bien pourriez-vous essayer quelque chose comme ça dans votre fonction de manutention?

if longPressGestureRecognizer.state == UIGestureRecognizerState.Began { 
    let touchPoint = longPressGestureRecognizer.locationInView(self.view) 
    if let indexPath = tableView.indexPathForRowAtPoint(touchPoint) { 
     // Your Stuff 
    } 
} 
+0

Merci beaucoup! Ce que j'ai fait ici, c'est stocker l'indexPath dans une propriété stockée dans la classe et y accéder dans 'prepareForSegue'! –