TableView et Section
Salut !
Voilà j'ai trouvé une méthode mais elle est un peu lourde et j'aimerai savoir si vous avez un truc plus simple.
En gros j'ai mon TableView qui affiche des noms déjà classés par ordre alphabétique. J'aimerai qu'à chaque changement de lettre il y a une petite section grise qui indique la première lettre des mots qu'on s'apprête à consulter.
Vous voyez?
Au départ j'avais penser faire plusieurs tableaux contenant juste les mots commençant par la même première lettre mais bon c'est archi lourd
Voilà j'ai trouvé une méthode mais elle est un peu lourde et j'aimerai savoir si vous avez un truc plus simple.
En gros j'ai mon TableView qui affiche des noms déjà classés par ordre alphabétique. J'aimerai qu'à chaque changement de lettre il y a une petite section grise qui indique la première lettre des mots qu'on s'apprête à consulter.
Vous voyez?
Au départ j'avais penser faire plusieurs tableaux contenant juste les mots commençant par la même première lettre mais bon c'est archi lourd
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu peux utiliser les méthodes filteredArrayUsingPredicate: pour récupérer un tableau ne contenant par exemple que les noms commençant par la lettre A :
Après dans tous les cas vu qu'il est plus efficace d'optimiser les NSArrays pour l'affichage, car "[tt]tableView:cellForRowAtIndexPath:[/tt]" peut être appelé assez souvent, il est de bon aloi d'éviter de faire cette "extraction" de chacun de tes sous-tableaux hors de [tt]tableView:cellForRowAtIndexPath:[/tt] mais de la faire en amont, et de mémoriser ce découpage par exemple dans un NSDictionary de NSArray (les clés du NSDictionary seraient les premières lettres, donc @A, @B, ... et les valeurs associées à ces clés seraient les NSArray contenant tous les noms commençant par cette lettre).
Merci pour la piste !
Avec une petite boucle pour générer ces tableaux puis les mettre dans un NSDictionary selon la première lettre, ça doit pas être bien méchant.
Et sinon je t'ai proposé la solution des NSPredicate, mais si ton tableau doit être trié alphabétiquement de toute façon, ça peut être plus efficace sinon aussi d'utiliser ce tri pour la séparation. Une solution est simplement de mémoriser les positions des changements de lettre.
On pourrait ainsi imaginer qqch comme cela : Bon j'ai pas testé mais c'est pour montrer le principe. A la fin de ce code, dans le tableau C "offsets" tu auras les offsets des noms pour chaque première lettre. Ainsi, le premier nom commençant par la lettre "D" sera à la position [tt]offset['D'-'A'+1] = offset[4][/tt] dans ton NSArray.
Avec ça y'a sans doute moyen de se débrouiller pour remplir la tableView sans trop de mal...
Enfin c'est qu'une suggestion, à creuser, ça évite d'avoir 28 tableaux quoi