UITableView: afficher un total dans la dernière cellule
Claude1967
Membre
Bonsoir , j'aurai une autre petite question ??
Est-il possible que l'on puisse ajouter une cell en plus dans un résultat de tableView pour y faire un total des heures ?
Comme ça la dernière cellule m'indiquerai le total de heures ??
Modérateur: il s'agit d'une nouvelle question, j'ai donc scindé la discussion originale. Merci de ne poser qu'une question par sujet pour que les réponses ne se croisent pas.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Oui, c'est possible, en modifiant la DataSource de la tableView. Comment fais-tu pour construire ta tableView ? Quel type de cellules utilises-tu ?
En supposant que tu feeds ta UITableView avec un NSArray.
Dans la méthode qui indique le nombre de cellules, il faut renvoyer [tonNSArray count]+1. Je n'ai pas explicitement nommé la méthode, car cela peut changer en fonction de sections, etc.
Dans la méthode qui file les UITableViewCell et les configure : quand tu arrives au NSIndexPath qui correspond, tu remplis les données de ta cellules avec celle spéciale.
Quand Xcode crée une classe TableViewControler, il génère aussi sa DataSource. Ce sont les méthodes permettant d'indiquer à la TableView ce qu'elle doit afficher.
Par exemple, quand tu crée un TableViewControler, tu as ces méthodes :
C'est du Swift, parce que pour moi la syntaxe de l'objectif-C est du martien. Mais les principes sont les mêmes.
numberOfSectionsInTableView sert à indiquer le nombre de sections dans la tableView. Je présume que tu n'as qu'une seule section et retourne la valeur 1.
Je ne sais pas comment tes données sont définies. Je vais prendre comme hypothèse que les heures sont stockées dans un tableau alphanumérique. Ton code doit ressembler à ça :
Tu dois remplir les cellules en passant par cette méthode :
Pour ajouter une nouvelle cellule, tu dois augmenter de 1 le nombre de cellules
Et modifier le système de remplissage, pour tenir compte de la dernière cellule.
Je ne garantit pas que ce code fonctionne. C'est du Swift, tapé à la vas-vite sans test. Mais le principe est là . A toi de t'en inspirer.
Je te recommande d'utiliser une couleur différente pour afficher la somme des heures, pour améliorer la lisibilité.
Bonsoir Malheuresusement ca ne fonctionne pas snifffff
a chaque fois que je met :
return [tableauMois count]+1;
et bien sur
if (indexPath.row < tableauMois.count) {
cell.textLabel.text = concatenation ;
cell.detailTextLabel.text = [jours article];
} else {
cell.textLabel.text = @Total;
cell.detailTextLabel.text =@Sous total ;
2016-01-07 16:33:08.267 Journal[90853:16253875] Voici le moi Choisis janvier 2016
2016-01-07 16:33:38.379 Journal[90853:16253875] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 6 beyond bounds [0 .. 5]'
merci .
[jours article]: Tu récupères pas jours avec tableauMois[indexPath.row] ? Il faut le faire après le test indexPath.row < tableauMois.count.
pfffft c'était si simple ca fonctionne , MERCI
mais je n'arrive pas à Additionné les chiffes grrr au retour du 2er index ma valeur vaut aléatoirement + 1000 ou 2300 alors que je lui et
juste ajouter 2 + 4
j'ai essayer avec des int ou des Nsnumber fait ca fait pareil , je cherche je cherche lollll
mais encore merci pour votre aides.
Claude
Il va falloir être plus explicite sur ta méthode de calcul...
a chaque fois que je prend le
NSString *deuxiemeChaine = [jours heure];
je le convertis deuxiemeChaine en integer
NSInteger HeureEnNombre = [deuxiemeChaine intValue];
j'ai crée un integer dans mon .h
@property (strong, nonatomic) NSNumber *MemoireHeure;
et la je bloque car je ne peux pas faire
_MemoireHeure = _MemoireHeure + HeureEnNombre;
et quant suis a a dernier Cellule je la reconvertit en NSString et l'ajoute cell.textLabel.text
mais je ne trouve pas comment faire .
oops je vient de me rendre compte que je prend "02:00" donc impossible avec les ":"
j'essaye une autre méthode , mais elle ne fonctionne pas non plus , pourriez vous m'aider ?
j'ai déclaré un @property (strong, nonatomic) NSMutableArray *HeuresDansLeTableau;
je l'ai bien mis dans le M
@synthesize HeuresDansLeTableau;
et a chaque fois que j'ajoute dans la cellule , j'ajoute dans le tableau comme ceci
cell.textLabel.text = concatenation ;
cell.detailTextLabel.text = [jours article];
[self.moisDansLeTableau addObject:deuxiemeChaine];
et mon tableau reste toujours Vide !!! je ne comprend pas pourquoi ??
Plutôt que de donner des morceaux de code ici et là , tu ne peux pas nous montrer le code complet de ton UITableViewControler, histoire de comprendre ce qui s'y passe ?
Utilise la balise code pour insérer le source dans ton texte. C'est la balise <>, à coté de la bulle de bande dessinée dans le menu.
Pas de soucis je fais ça de que j'ai repris le code , car je ne suis pas souvent à la maison, je suis chauffeur poids-lourd.
Si tu es un autodidacte n'ayant plus codé depuis 6 ans, sans formation d'informaticien tu ferais bien de laisser tomber l'Objective-C pour passer à Swift. C'est nettement plus simple à maitriser, d'autant plus qu'Objective-C a beaucoup évolué en 6 ans. Tes souvenirs sont forcément obsolètes. Tu devras passer un certain temps à comprendre les évolutions du langage. Autant repartir sur un langage plus simple et plus efficace. Si Apple a sortit Swift c'est pour simplifier la programmation et remplacer à terme Objective-C.
Il y a un cours en vidéo sur le langage Swift dans ma signature, en provenance de l'université de Jussieu.
Ha bon c'est une nonne nouvelle ça !!
Je vais regarder un peux de que je suis rentré .
Merci