2017-10-07 14 views
0

J'utilise tableView pour afficher une liste de noms. Lorsque l'utilisateur tape sur l'une des cellules, une fenêtre contextuelle devrait s'afficher montrant plus de détails. J'utilise cette fonction pour vérifier quelle cellule l'utilisateur a tapé. Malheureusement, il semble donner des nombres aléatoires entre 0 et 2 (j'ai actuellement trois cellules qui sont affichées). Savez-vous comment je pourrais savoir quelle cellule a été tapée?Comment savoir quelle cellule a été tapée dans tableView à l'aide de Swift

Merci d'avance.

EDIT:

Je compris ce qui est falsing mes résultats.

J'utilise cette fonction pour pousser quelle cellule est sélectionnée vers un autre contrôleur de vue (nommé ConversationViewcontroller). Mais, la fonction segue est appelée avant la fonction tableView, et donc la segue pousse la cellule précédemment sélectionnée. Comment pourrais-je corriger cela?

Voici le code de mon Segue:

//SEGUE: Cell was selected: pass chatID 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "OpenChat" { 
      if let toViewController = segue.destination as? ConversationViewController { 
       toViewController.chatIdentifier = selectedCell 
      } 
     } 
    } 

Merci encore.

+0

Le code affiché est le bon code. 'indexPath.row' sera la ligne sur laquelle vous avez tapé. – rmaddy

+0

Il semble fonctionner correctement. Si vous avez trois cellules, le premier indexpath.row sera 0, le second sera 1 et ensuite 2. –

+0

Confirmer l'affectation de delegate et daatasource à votre tableview – Alexander

Répondre

1

essayer cette

var selectedCell: IndexPath 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("This cell from the chat list was selected: \(indexPath.row)") 
    selectedCell = indexPath 
} 

si vous voulez utiliser indexPath

self.selectedCell?.row