Question

J'utilise la méthode suivante dans mon application:

- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Dans cette méthode en utilisant indexPath.row , je peux obtenir le numéro de la ligne de chaque ligne.

Mais je souhaite réellement accéder à la cellule de cette rangée et effectuer un formatage uniquement sur cette cellule.

Merci de me guider.

Était-ce utile?

La solution

Peut-être y a-t-il un malentendu. La méthode que vous citez est supposée indiquer à la tableView quelle ligne afficher à cet indexPath. Ainsi, chaque fois que tableView demande cette méthode, il le fait car il n'y a pas encore de ligne à cet indexPath.

Le code de modèle générera une nouvelle cellule ou une nouvelle file d'attente:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
              cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
     }

Vous pouvez ensuite accéder à la cellule pour configurer le contenu de chaque cellule ou ajouter du contenu à contentView.

Si vous manipulez le formatage d'une cellule par rangée (par exemple, la couleur de cell.textLabel), procédez comme suit dans la méthode de délégation suivante:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

Autres conseils

Alors que les autres réponses fonctionneront bien, mais cela changera simplement la cellule sur laquelle l'utilisateur a tapé. Pour mon cas, je voulais aussi changer les autres cellules. Après avoir cherché, j'ai essayé:

[[tableView cellForRowAtIndexPath:5 setAccessoryType:UITableViewCellAccessoryNone];

Cela ne marche PAS, car IndexPath n'est pas un entier. (indexpath.row est cependant). Ainsi, en consultant la documentation, j'ai découvert que nous pouvons utiliser NSIndexPath pour encoder une ligne dans Valeur NSIndexPath. Voici le code de travail:

[[tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:5 inSection:0]] setAccessoryType:UITableViewCellAccessoryNone];

De cette façon, vous pouvez accéder à la cellule PARTOUT, À TOUT RANG / SECTION, à condition que vous ayez l'objet tableview.

J'espère que cela aide quelqu'un.

Vous pouvez accéder à une cellule visible à l'aide de la méthode UITableView -cellForRowAtIndexPath . From UITableView référence:

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
  

Valeur renvoyée
Objet représentant un   cellule de la table ou nil si la cellule   n'est pas visible ou indexPath est hors de   plage.

Cependant (OMI) cellForRowAtIndexPath est le meilleur endroit pour une configuration de cellule.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top