2009-10-07 11 views
1

J'utilise une classe UITableViewCell personnalisée. Ma cellule a plusieurs boutons (4 pour être précis) et les clics sur les boutons sont gérés dans le UIViewController qui utilise cette classe de cellules.iPhone - problème dequeueReusableCellWithIdentifier avec des cellules personnalisées

J'essayais d'utiliser l'étiquette du bouton pour calculer le numéro de ligne sur lequel le bouton a été cliqué. Mais cela provoque un problème si une cellule n'a pas été créée et utilise à la place un objet libre. Dans ce cas, l'étiquette et le numéro de ligne ne correspondent pas. Est-ce que quelqu'un peut me dire comment je peux gérer ce cas? Si je donne la même étiquette à tous les boutons de différentes lignes, comment puis-je identifier la ligne sur laquelle le bouton a été cliqué?

Merci beaucoup.

Répondre

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

    static NSString *CellIdentifier = @"Cell"; 

    MyTableCell *cell = (MyTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) {  
     // whatever you have now 
    } 
    // Set up the cell... 
    cell.myListViewController = self; 
    int tag = indexPath.row; 
    cell.button1.tag = tag; 
    cell.button2.tag = tag; 
    cell.button3.tag = tag; 
.... 
} 

Ce code aura une étiquette unique pour les boutons dans chaque rangée. Vous définissez la balise non dans la création de la nouvelle cellule mais dans tous les cas, y compris la réutilisation.

+0

Donc vous dites que je conserve les instances d'objets UIButton dans la classe UITableViewCell? – lostInTransit

+0

Notez que l'utilisation de la ligne comme étiquette ne fonctionnera de manière fiable que si vous avez une section de table. –

+0

Oui, j'ai juste une section. Merci. – lostInTransit

Questions connexes