2015-08-29 13 views
8

Sto tentando di aggiungere un riconoscitore di gesti a un oggetto (un'immagine, in particolare) in una cella di visualizzazione tabella. Ora, ho familiarità con i riconoscitori di gesti, ma sono rimasto leggermente confuso su come impostare questo. La cella di tabella effettiva non ha un metodo viewDidLoad, quindi non penso di poter dichiarare il riconoscimento dei gesti lì.Swift: aggiungi il riconoscimento dei gesti all'oggetto nella cella della tabella

Questa domanda (UIGestureRecognizer and UITableViewCell issue) sembra essere correlata, tuttavia la risposta è nell'obiettivo C, e sfortunatamente sono fluente in rapidità.

Se qualcuno potrebbe darmi una mano su come aggiungerei un identificatore di gesti a un oggetto in una cella di tabella (NON l'intera vista tabella), o magari aiutarmi a tradurre la risposta dal link precedente a rapido, sarei grato

risposta

15

Ecco un rapido Swift-traduzione della soluzione di posta collegato, aggiungendo il sistema di riconoscimento colpo gesto al UITableView e poi determinare quali cellule il colpo è accaduto:

class MyViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     var recognizer = UISwipeGestureRecognizer(target: self, action: "didSwipe") 
     self.tableView.addGestureRecognizer(recognizer) 
    } 

    func didSwipe(recognizer: UIGestureRecognizer) { 
     if recognizer.state == UIGestureRecognizerState.Ended { 
      let swipeLocation = recognizer.locationInView(self.tableView) 
      if let swipedIndexPath = tableView.indexPathForRowAtPoint(swipeLocation) { 
       if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath) { 
        // Swipe happened. Do stuff! 
       } 
      } 
     } 
    } 

} 
+0

Sebbene entrambe le risposte fossero corrette, ho scelto questo perché era più completo. Grazie mille :) –

2

ecco qui. Versione Swift della soluzione che lei ha citato nella sua interrogazione

"Invece di aggiungere il sistema di riconoscimento gesto alla cella direttamente, è possibile aggiungerlo alla Tableview in viewDidLoad.

Nel didSwipe-Metodo è possibile determinare i colpiti IndexPath e cella come segue:"

func didSwipe(gestureRecognizer:UIGestureRecognizer) { 
    if gestureRecognizer.state == UIGestureRecognizerState.Ended { 
     let swipeLocation = gestureRecognizer.locationInView(self.tableView) 
      if let swipedIndexPath = self.tableView.indexPathForRowAtPoint(swipeLocation){ 
      if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath!){ 


     } 
    } 
    } 
}