2010-12-14 7 views
7

Esiste un metodo di notifica o delega che è possibile utilizzare per rilevare quando la vista tabella entra nello stato di modifica?UITableView Modifica/Eventi completati

Quello che voglio fare è rilevare che la tabella sta modificando e quindi visualizzare una riga aggiuntiva che dice "Aggiungi nuovo elemento" o qualcosa del genere.

Ho provato ad aggiungere la riga "Aggiungi nuovo elemento" alla fine dell'array quando viene caricato il controller di visualizzazione e quindi, a seconda che [tableView isEditing] sia vero o no, restituire [conteggio array] (per quando sto modificando) o [numero di array] - 1 (per quando non sto modificando).

Qualche idea? In che modo Apple modifica gli elementi nella tabella e consente l'eliminazione?

risposta

6

L'ho trovato. Ignora questo metodo:

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

    // do something 
} 
3

Quello che puoi fare è aggiungere IBAction come selettore al tuo editButton. Toccando editButton verrà chiamato quel metodo. Esempio:

-(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... 
    } 
} 

Se avete il proprio UIButton e non è stata utilizzata self.editButtonItem serie quindi utilizzare [yourButton addTarget: azione di auto: @selector (editAction :) forControlEvents: UIControlEventTouchUpInside]; E gestirlo come un UIButton * in editAction: metodo