2009-05-13 3 views

risposta

15

La cosa complicata dell'eliminazione delle celle è questa: quando si scorre da sinistra a destra per mostrare il pulsante "Elimina", UITableViewCell passa allo stato UITableViewCellStateShowingDeleteConfirmationMask, ma non imposta lo stato UITableViewCellStateEditingMask. Ciò significa che non è possibile modificare lo accessoryView per lo stato di modifica.

Il modo per aggirare questo è guardare il metodo willTransitionToState: di UITableViewCell. Quello che puoi fare è intercettare la chiamata a questo metodo che inserirà la cella nello stato di conferma dell'eliminazione e mostrerà le tue visualizzazioni anziché il pulsante di conferma "Elimina" che normalmente viene mostrato.

Per ulteriori informazioni, consultare the docs per willTransitionToState: per UITableViewCell.

+1

Grazie Tim. Questo mi consente di intercettare lo swipe per entrare in modalità di modifica, ma non mi è chiaro come fermare UITableViewCell che mostra il proprio pulsante 'cancella'. Attualmente questo succede quando passo il messaggio a super - che la documentazione dice sia obbligatoria. Si sta anche proponendo che l'unico modo per farlo è quello di aggiungere il mio UIButton e fare il cablaggio di eliminazione da solo piuttosto che fare affidamento sulla tabella dataSourceView: commitEditingStyle: forRowAtIndexPath :? Sembra strano che la gestione dell'eliminazione ignori tutte le opzioni di personalizzazione di UITableViewCell. –

+0

Hm. Non sono abbastanza sicuro che sia possibile sopprimere completamente la visualizzazione del pulsante Elimina incorporato di UITableViewCell, a meno che non si faccia come suggerito e si imposta il proprio pulsante di eliminazione invece di chiamare il metodo super. Potresti forse intercettare willTransitionToState: i messaggi che lo posizionano in modalità Delete e li reindirizzano per posizionare la tabella in modalità di modifica, che (IIRC) fornisce anche un controllo di eliminazione (il piccolo simbolo rosso meno). – Tim

+0

Sembra azzardato. Penso che per ora lavorerò attorno al pulsante Apple e se avrò tempo implementerò il mio rilevamento di scorrimento e controllo di cancellazione. –