2011-04-11 16 views
5

Sto creando un'interfaccia basata su tabella simile a Contatti iPad, in cui l'utente può aggiungere a un elenco di righe toccando una riga vuota nella parte inferiore. La tabella è sempre in modalità di modifica e le righe non vuote dovrebbero avere un'icona di modifica di eliminazione standard a sinistra. Non appena l'utente inizia a digitare l'ultima riga vuota, è necessario aggiungere un'icona di eliminazione a sinistra (e una nuova riga vuota aggiunta).Aggiornamento stile di modifica di UITableViewCell a seconda del contenuto

Qualcuno sa come rendere UITableView aggiornare lo stile di modifica su richiesta? Tutto funziona, tranne che l'icona di eliminazione non viene visualizzata fino a quando l'utente non scorre la riga fuori dalla vista e quindi torna alla visualizzazione.

Ecco la mia implementazione editingStyleForRowAtIndexPath:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
      editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (/* text field contains data */) 
    { 
     return UITableViewCellEditingStyleDelete; 
    } 
    else 
    { 
     return UITableViewCellEditingStyleNone; 
    } 
} 

risposta

10

Ho combattuto lo stesso problema ieri. È fondamentalmente necessario attivare la proprietà della modalità di modifica della vista tabella. Dopo averlo fatto, aggiornerà lo stile di modifica della tua cella.

Ecco il codice che fa il trucco per me:

self.tableView.editing = NO; 
self.tableView.editing = YES; 

Questo dà quello che mi sembra essere l'esatto stesso tipo di effetto come l'applicazione dei contatti. Come minimo, aggiornerà il tuo editingStyle.

+0

Funziona, grazie! Forse dovrei chiedere questo in una nuova domanda, ma hai anche trovato un modo per rimuovere il cursore del risponditore attivo UITextField quando l'icona di eliminazione viene toccata, come fa Contatti? –

+0

No, non l'ho mai guardato dal momento che non era qualcosa che mi interessava davvero. –

+0

Vorrei averlo trovato un paio d'ore fa. – smparkes

0

provare a chiamare reloadRowsAtIndexPaths:withRowAnimation: sulla riga in fase di modifica. (Non sono sicuro se questo rovinerà lo stato del primo risponditore sul tuo campo di testo o meno.)

+0

Sì, sfortunatamente questo fa incasinare il primo interlocutore. –

Problemi correlati