50 votes

Lors de l'édition, `UITableView` n'appelle pas didSelectRowAtIndexPath ??

J'ai un UITableViewController où l'utilisateur doit être en mesure de modifier les articles. Afin de permettre l'édition j'utilise ceci :

self.navigationItem.rightBarButtonItem = self.editButtonItem;

Pour tous ceux qui ne savent pas où l'auto.editButtonItem vient, il est prédéfini par le SDK.

Donc, maintenant quand j'appuie sur n'importe quel élément, cette méthode est appelée :

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

mais dès que j'ai touché le bouton modifier, puis lors de l'édition est active, cette méthode n'a pas l'air d'être appelé.

Toute idée de ce que je suis absent ?

C'est le reste du code qui est lié à l'édition :

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return UITableViewCellEditingStyleNone;
}


- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return NO;
}

Merci pour l'aide.

mcb

141voto

Daniel Points 16707

Vous devez définir la propriété allowSelectionDuringEditing de UITableView sur true ... voici une référence UITableView

0voto

RickiG Points 6348

Définissez-vous les self.editing = YES lorsque vous appuyez sur le bouton Modifier?

En mode édition, cette méthode est appelée à la place de didSelectRow lorsque vous tapez sur une ligne:

 tableView:commitEditingStyle:forRowAtIndexPath:.
 

-2voto

Shaggy Frog Points 20388

mais dès que j'ai touché le bouton modifier, puis lors de l'édition est active, cette méthode n'a pas l'air d'être appelé.

Toute idée de ce que je suis absent ?

Oui. Vous attendez tableView:didSelectRowAtIndexPath: à être appelée lorsque le bouton dans votre barre de navigation est exploité. Cela n'arrivera jamais. Cette méthode n'est appelée que lorsque une ligne est sélectionnée.

Lorsque le bouton modifier est tapé, vous voulez mettre votre table en mode d'édition. Dans votre vue-contrôleur:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated]; // must be called first according to Apple docs

    [self.tableView setEditing:editing animated:animated];
}

Ensuite, vous gérer la modification des événements par l'ajout d'un tableView:commitEditingStyle:forRowAtIndexPath: méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X