Problème de coloration du texte

SamariumSamarium Membre
04:24 modifié dans Vos applications #1
Bonjour à  tous,

Je suis nouvelle sur ce forum et je viens rechercher votre aide pour un projet Ipad que je suis en train de réaliser dans le cadre d'un stage. Mon soucis est le suivant (Je vais essayée d'être la plus claire possible): Sur la partie gauche de l'écran Ipad donc dans le RootViewController j'affiche une liste récupérée grâce à  une récupération de données dans une base SQLite. Jusque là  tout va bien, j'affiche ma liste déroule avec les noms que j'ai récupéré ca marche. Par contre je récupère également un numéro d'axe avec chaque entrée et selon l'axe je veux appliquer une couleur au texte de ma cellule. Par exemple seule la première entrée est à  l'axe 0 donc je met ma condition ca s'affiche en rouge super... Oui mais voila ensuite quand je fais dérouler mon menu la première cellule qui était cachée en bas de l'écran est aussi rouge et ainsi de suis pour celle cachée encore après au même intervale. Je dois mal appliquer ma couleur mais je ne vois pas comment faire autrement. Je voulais utiliser les NSAttributedString mais visiblement ce n'est pas compatible avec les UITableCell. Voici mon code pour la mise en forme des cellules :
<br />- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {<br />	<br />&nbsp; &nbsp; static NSString *CellIdentifier = @&quot;Cell&quot;;<br />	<br />&nbsp; &nbsp; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];<br />&nbsp; &nbsp; if (cell == nil) {<br />&nbsp; &nbsp; &nbsp; &nbsp; cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];<br />&nbsp; &nbsp; }<br />	<br />&nbsp; &nbsp; SQLiteTutorialAppDelegate *appDelegate = (SQLiteTutorialAppDelegate *)[[UIApplication sharedApplication] delegate];<br />Animal *animal = (Animal *)[appDelegate.animals objectAtIndex:indexPath.row];<br />&nbsp; &nbsp; NSString *setaxe = [[NSString alloc] initWithFormat:animal.name];<br /><br />&nbsp; &nbsp; [cell setText:setaxe];<br />&nbsp; &nbsp; UIImage *image = [UIImage imageNamed:@&quot;fleche.png&quot;];<br />&nbsp; &nbsp; cell.image = image;<br />&nbsp; &nbsp; if ([animal.name isEqualToString:@&quot;CAP 2011 de la DCPP Ouest&quot;])<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; cell.textLabel.textColor = [UIColor redColor];<br />	}<br />&nbsp; &nbsp; &nbsp; &nbsp; return cell;<br />}<br />

Réponses

  • CéroceCéroce Membre, Modérateur
    septembre 2011 modifié #2
    Problème évoqué maintes fois, lié au recyclage des cellules (pour les détails, fais une recherche). Lis le paragraphe dans le guide sur les table views lié au "Cells Reuse".

    Quand on arrive au bas de la liste, la table view réutilise une UITableViewCell qu'elle a conservé en réserve.
    Il faut donc repasser la couleur du texte en noir dans les cas où le nom de l'animal ne correspond pas à  la chaà®ne.


    P.S.: Accéder à  l'AppDelegate est une approche très mauvaise, certes qu'on voit dans plein de tutos (de m****), mais ça rend ton contrôleur dépendant de toute l'archi de l'appli, alors pourquoi ne pas passer au contrôleur uniquement les infos dont il a besoin ?
  • SamariumSamarium Membre
    04:24 modifié #3
    Merci pour  ta réponse, je vais chercher sur le forum pour la réutilisation des cellules.
    Honnêtement je suis complètement débutante en objective C. Je connais parfaitement le C mais c'est mon premier langage objet donc ce n'est pas évident et je suis des tutoriels bouquins + Internet pour m'en sortir. SI vous avez des conseils pour que mon appli soit moins codée avec les pieds ^^.

    Merci
Connectez-vous ou Inscrivez-vous pour répondre.