2009-10-16 5 views
2

J'ai besoin d'aide pour utiliser la case à cocher cellule. J'ai actuellement ajouté l'objet à tableview. Cela semble ok jusqu'à ce que j'ai essayé de construire et d'exécuter le programme où je ne peux pas cocher la case. J'utilise actuellement une tableview qui affiche les éléments runtime avec une case à cocher pour chaque élément afin que je puisse avoir plusieurs sélections.Cellule de case à cocher dans une vue de table: l'utilisateur ne peut pas la vérifier

Je suis nouveau sur xcode et j'ai été bloqué pendant une semaine avec ce problème. J'ai essayé google mais toujours pas de chance.

Des extraits, des réponses ou des explications sont très appréciés.

Répondre

5

Nous devons d'abord éditer cette méthode: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath. En supposant que vous avez généré une application basée sur la navigation, cette méthode devrait déjà être là, seulement commentée. Je ne connais pas les détails exacts de votre implémentation, mais vous devez en quelque sorte suivre l'état de la case à cocher pour chaque cellule de la tableView. Par exemple, si vous aviez un tableau BOOL, le code suivant fonctionnerait:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

if (checkboxArray[indexPath.row]) 
    checkboxArray[indexPath.row] = NO; 
else 
    checkboxArray[indexPath.row] = YES; 

[self.tableView reloadData]; 
} 

Maintenant que nous savons ce que les cellules ont besoin d'avoir une coche à côté d'eux, l'étape suivante consiste à modifier la façon dont la cellule est affichée . - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath gère le dessin de chaque cellule. La construction de l'exemple précédent, voici comment vous afficher la case à cocher:

- (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]; 
    } 

if (checkboxArray[indexPath.row]) { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
else 
    cell.accessoryType = UITableViewCellAccessoryNone; 

// Configure the cell. 

    return cell; 
} 

Si nous ne remettons pas reloadData, la case ne sera pas affiché jusqu'à ce qu'il se déclenche à l'écran et réapparaît. Vous devez définir explicitement le accessoryType à chaque fois en raison de la façon dont les cellules sont réutilisées. Si vous définissez le style uniquement lorsqu'une cellule est cochée, les autres cellules qui ne seront pas forcément cochées auront une coche lorsque vous défilerez. Espérons que cela vous donne une idée générale sur la façon d'utiliser les coches.

Questions connexes