2010-09-20 4 views
1

Je sais seulement que la première étape consiste à vérifier une ligne. Ensuite, je pense est d'utiliser un NSMutableArray pour enregistrer quelle ligne est cochée, et voici mon code:iphone SDK: Comment cocher la case pour supprimer la ligne?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     if ([[tableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark){ 

       [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryNone]; 
      } 

      else { 

       [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark]; 

     } 
    } 

Alors, ma question est:

  1. Comment mettre cette case cochée la indexPath de ligne dans un tableau? Comment ajouter un bouton de suppression que je peux supprimer toute la ligne que j'ai sélectionnée?

Répondre

2

Tout d'abord, déclarez un NSMutableArray dans le fichier .h de votre viewController.

comme ceci:

NSMutableArray *checkedRows; 

Change vous êtes didSelectRow méthode comme ceci:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if ([checkedRows containsObject:indexPath]) { 
     [checkedRows removeObject:indexPath]; 
    } 
    else { 
     [checkedRows addObject:indexpath]; 
    } 
    [self.tableView beginUpdates]; //Just for animation.. 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    [self.tableView endUpdates]; 
} 

Et vous êtes méthode cellForRow ajouter ceci:

if ([checkedRows containsObject:indexPath]){ 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
else { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 
+0

Merci, je vais essayer cette méthode maintenant! –

+0

Soory, je suis nul quand je me suis connecté checkedRows ...? –

+0

Désolé, je n'ai pas remarqué la deuxième partie de la question .. Cela ne traitera que la vérification des lignes .. La raison checkRows est nulle est probablement parce que vous ne l'avez pas allouer dans viewDidLoad .. Comme: checkedRows = [[NSMutableArray alloc] init ] également le libérer dans dealloc [version checkedRows]; Faire quelque chose comme TechZen recommandé .. – LarsJK

1

Vous allez sur ce mal.

Vous ne gérez pas vous-même les vues des accessoires d'édition. Au lieu de cela, vous envoyez setEditing:animated: à la table et il modifie les cellules pour vous. Ensuite, vous devez implémenter:

– tableView:commitEditingStyle:forRowAtIndexPath: 
– tableView:canEditRowAtIndexPath: 

... pour supprimer réellement les cellules de ligne.

Questions connexes