UITableViewController moveRowAtIndex

maitomaito Membre
janvier 2016 modifié dans API UIKit #1

Bonjour, j'ai une simple question a vous poser, 


tout d'abord j'override la fonction suivante: 



func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)

je voulais savoir, lorsque nos cellules (sachant que mes cellules affichent les mots provenant d'un tableau) changent d'ordre, si le view controller sais ou se trouve chaque cellules automatiquement (i.e il update la place des cellules sans que je le vois ?) ?

Réponses

  • DrakenDraken Membre
    janvier 2016 modifié #2

    Je n'ai jamais utilisé cette méthode. D'après ce que j'ai compris, elle est appelée automatiquement par la tableView quand l'utilisateur modifie manuellement la position d'une cellule. Comme par exemple un rendez-vous dans la case 11h, déplacée à  15h. Elle n'a rien a voir avec l'affichage des cellules. C'est juste un message indiquant que le contenu de la data source (ton tableau) doit être modifié pour tenir compte de l'action de l'utilisateur.


     


    Les paramètres sourceIndexPath et destinationIndexPath indiquent l'ancienne et la nouvelle valeur de la cellule (11h glissant à  15h dans mon exemple).


     


    Le viewController ne sais jamais où se trouve les cellules. Seule la tableView connait cette information en interne. Le viewController ne sert qu'à  faire la jonction entre la tableView, son délégué et la data source.


     


    https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/index.html#//apple_ref/occ/intfm/UITableViewDataSource/tableView:moveRowAtIndexPath:toIndexPath:


  • CéroceCéroce Membre, Modérateur

    je voulais savoir, lorsque nos cellules (sachant que mes cellules affichent les mots provenant d'un tableau) changent d'ordre, si le view controller sais ou se trouve chaque cellules automatiquement (i.e il update la place des cellules sans que je le vois ?) ?

    Il s'agit d'une méthode de UITableViewDataSource. C'est donc la table view qui indique à  sa datasource que l'utilisateur fait ce déplacement de cellule. Dans la datasource (probablement ton contrôleur, mais pas forcément), il ne te reste qu'à  déplacer ce qui correspond à  la cellule dans ton Modèle.
    Par exemple, si chaque cellule représente un objet Plat, alors du dois réordonner le Plat dans la liste.
Connectez-vous ou Inscrivez-vous pour répondre.