2010-12-14 70 views
7

Existe-t-il une méthode de notification ou de délégation que je peux utiliser pour détecter quand la vue de table passe à l'état d'édition? Ce que je veux faire est de détecter que la table est en train d'éditer et ensuite afficher une ligne supplémentaire qui dit "Ajouter un nouvel élément" ou quelque chose comme ça.UITableView Editer/Terminer les événements

J'ai essayé d'ajouter la ligne "Ajouter un nouvel élément" à la fin de la matrice lorsque le contrôleur View est chargé, puis selon que [tableView isEditing] est vrai ou non, soit retourner [array count] (pour quand je suis en train d'éditer) ou [nombre de tableaux] - 1 (pour quand je ne suis pas en train d'éditer).

Des idées? De quelle manière Apple modifie-t-il les éléments de la table et permet leur suppression?

Répondre

6

Je l'ai trouvé. Remplacez cette méthode:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{ 
    [super setEditing:editing animated:animated]; 

    // do something 
} 
3

Ce que vous pouvez faire est d'ajouter un IBAction en tant que sélecteur à votre bouton d'édition. Lorsque editButton est sélectionné, cette méthode sera appelée. Exemple:

-(void)viewDidLoad 
{ 
// ... 
[self.editButtonItem setAction:@selector(editAction:)]; 
[self.navigationItem setRightBarButtonItem: self.editButtonItem]; 

// .. your code 

} 

-(IBAction)editAction:(id)sender 
{ 
    UIBarButtonItem * button = ((UIBarButtonItem*)sender); 

    if (!self.tableView.editing) 
    { 
     [self.tableView setEditing:YES animated:YES]; 
     [button setTitle:@"Done"]; 
     // do your stuff... 
    } 
    else 
    { 
     [button setTitle:@"Edit"]; 
     [self.tableView setEditing:NO animated:YES]; 
     // do your stuff... 
    } 
} 

Si vous avez votre propre UIButton et ne pas utiliser self.editButtonItem standard utilisent alors [yourButton addTarget: auto l'action: @selector (editAction :) forControlEvents: UIControlEventTouchUpInside]; Et le gérer comme un UIButton * dans editAction: méthode