web-dev-qa-db-fra.com

Comment détecter la sélection de cellules dans UITableView - Swift

je me demandais simplement comment j'allais implémenter didSelectRowAtIndexPath ou quelque chose de similaire dans mon application. J'ai une vue de tableau remplie avec plusieurs cellules dynamiques et, fondamentalement, je veux changer de vue une fois qu'une certaine cellule est sélectionnée.

Je peux me débrouiller dans Obj-C, mais il n'y a rien sur google pour m'aider avec Swift! Toute aide serait appréciée car j'apprends encore

19
Alex

Vous pouvez utiliser didSelectRowAtIndexPath dans Swift.

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    NSLog("You selected cell number: \(indexPath.row)!")
    self.performSegueWithIdentifier("yourIdentifier", sender: self)
}

Pour Swift 3 c'est

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    NSLog("You selected cell number: \(indexPath.row)!")
    self.performSegueWithIdentifier("yourIdentifier", sender: self)
}

Assurez-vous simplement d'implémenter le UITableViewDelegate.

32
Christian Wörz

C'est ainsi que j'ai réussi à passer des cellules UITableView à d'autres contrôleurs de vue après avoir implémenté cellForRow, numberOfRowsInSection & numberOfSectionsInTable.

//to grab a row, update your did select row at index path method to:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    NSLog("You selected cell number: \(indexPath.row)!");

    if indexPath.row == 1 {
        //THE SEGUE 
        self.performSegue(withIdentifier: "goToMainUI", sender: self)
    }
}

Sortira: You selected cell number: \(indexPath.row)!

N'oubliez pas de faire correspondre l'identifiant de votre séquence dans le story-board à l'identifiant de la fonction, par exemple goToMainUI.

3
WHC