Ressortir une cellule d'une tableView

seb92seb92 Membre
04:22 modifié dans Vos applications #1
Bonjour tout le monde,

Je bloque (depuis bientôt une semaine) sur la façon dont on peut récupérer une cellule et l'identifier.

Je m'explique, j'ai un programme avec une SearchBar qui donne sur une TableView.
Dans ma tableView, j'ai un tableau à  partir d'un NSMutableArray ou il y a different String.

Donc cela affiche en fonction de la recherche, plusieurs valeurs. Par exemple si je recherche la lettre "P", j'aurai plusieurs résultats tels que Piscine, Parking....

Mon problème est que je n'arrive pas à  récupérer les cellules en les distinguant, je retombe à  chaque fois sur la dernière. Et le indexPath.row ne m'est pas utile, car en fonction de ma recherche mes lignes seront pas dans le même ordre.

Mon code est :
<br /><br />- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {<br />static NSString *MyIdentifier = @&quot;MyIdentifier&quot;;<br />cell= [tableView dequeueReusableCellWithIdentifier:MyIdentifier];<br />if (cell == nil) {<br />cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];<br />}<br />cell.textLabel.text = [VariableAAfficher objectAtIndex:indexPath.row];<br />[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];<br /> <br />return cell;<br />}<br /> <br /> <br /> <br />- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {<br /><br /> //Ici, si je fait un self.cell.textLabel.text, j&#039;ai en retour que la dernière cellule<br /> //De même si je fait un if ([cell isSelected]), Cela ne fonctionne que pour la dernière cellule.<br />}<br /><br />


Je pense qu'il me manque une méthode, mais je ne la trouve pas. Et chaque essai me renvoie vers ma dernière cellule (voir code).

Je vous serais reconnaissant de bien vouloir m'aider.
Merci

Réponses

  • muqaddarmuqaddar Administrateur
    04:22 modifié #2
    Il faudrait voir ta méthode qui remplit le NSMutableArray....

    A partir du moment où tu filtres et que tu remplis (à  partir de zéro) ton NSMutableArray, que tu affiches son contenu rafraichis dans la table, et que tu cliques sur une cellule, il n'y a aucune raison qu'il ne te renvoit pas pas le bon contenu.

    Tu devrais avoir une méthode de ce genre qui est appelée à  chaque fois que tu changes le contenu de la recherche:

    - (void)filterContentForSearchText:(NSString*)searchText<br />{<br />	[self._filteredArray removeAllObjects];<br />	<br />	for (NSDictionary *dict in array)<br />	{<br />		NSPredicate *predicate = [NSPredicate predicateWithFormat:@&quot;(SELF contains[cd] %@)&quot;, searchText];<br />		NSString *content = [dict objectForKey:@&quot;name&quot;];		<br />		BOOL found = [predicate evaluateWithObject:content];<br />		if (found) [self._filteredArray addObject:dict];<br />	}<br />}
    


    puis après il faut rafraichir le contenu de la tableView avec le filteredArray.

  • seb92seb92 Membre
    04:22 modifié #3
    Merci d'avoir répondu,

    Enfait justement, le contenu de chaque cellules est vide. Et je veux pouvoir distinguer les differentes cellules, pour ensuite les assigner à  des POI sur une carte.

    Ben la je viens d'essayer avec un NSMutableArray, j'ai créé le tableau.
    Puis j'ajoute à  chaque passage la cell dans le tableau.
    Et en sorti, je j'affiche le tableau au bon indexPath.row et ça à  l'air de marcher.

    Mais maintenant je vois pas comment je peux renvoyer le programme à  un de mes POI present sur la carte.
    Est-ce que c'est possible au moins de faire en sorte que au moment ou je clique sur ma cellule, cela me renvoie sur une annotation contenu sur ma carte ?
Connectez-vous ou Inscrivez-vous pour répondre.