2010-07-19 6 views
14

J'ai un UITableView qui est modifiable. Je commiting changements via:Comment sélectionner des lignes en mode édition?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

En mode d'édition, je voudrais que l'utilisateur peut sélectionner une ligne, ce qui poussera une nouvelle vue. Je ne suis pas sûr de savoir comment faire cela. Je suppose qu'il sera dans:

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

Mais comment puis-je déterminer si l'utilisateur est en mode édition ou non?

MISE À JOUR: Edit Mode est activée via:

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

Répondre

29

pour permettre la sélection lors de l'édition que vous devez définir la propriété allowsSelectionDuringEditing de UITableView YES. Ensuite, il appellera le message didSelectRowAtIndexPath. Vous pouvez trouver plus d'informations sur cette propriété ici:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableView/allowsSelectionDuringEditing

Ensuite, vous pouvez voir si l'utilisateur est en mode d'édition par le code en cours d'exécution comme ce qui suit:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView.editing == YES) { 
     // Table view is editing - run code here 
    } 
} 
+0

Avec iOS 9, didSelectRowAtIndexPath est jamais appelé en mode édition même avec allowSelectionDuringEditing = YES. Au lieu de cela, vous pouvez implémenter willSelectRowAtIndexPath-- qui sera appelée si vous définissez aussi allowSelectionDuringEditing = YES. – lifjoy

+0

@lifjoy, je suis en train de développer sur IOS 9.2, la solution didSelectRowAtIndexPath fonctionne toujours via allowSelectionDuringEditing. –

+0

@Jerry Chen: c'est curieux. Quoi que je fasse, didSelectRowAtIndexPath ne fonctionnait pas pour moi quand la table était en mode Edit. – lifjoy

Questions connexes