Ho uno UITableView
su cui sto attivando setEditing:animated:
, per consentire all'utente di inserire ed eliminare righe. Quando la modifica è attiva, voglio una nuova riga insert new item
da aggiungere alla tabella e quindi voglio che i controlli di modifica si animino come normale. Non voglio che la nuova riga insert new item
si animi da sola, usando qualcosa come una dissolvenza. Voglio che appaia e faccia scorrere come tutte le righe delle sorgenti dati della tabella esistenti.Perché setEditing: animated: e insertRowsAtIndexPaths: si traduce in questa strana animazione in stile di modifica?
Ecco ciò che sta accadendo a causa del mio codice corrente, anche se (cliccare per ingrandire):
La riga superiore fa quello che voglio - scivola semplicemente sopra e l'icona si affievolisce di eliminazione Quando scompare, l'icona di eliminazione scompare e la riga si espande nuovamente.
La seconda riga è la mia riga non di origine dati che aggiungo al tavolo. All'apparire, non si anima affatto. L'icona e la riga di inserimento appaiono tutte in una volta e non si inseriscono. Quando scompare, la riga si espande bene, ma l'icona più scorre con essa. L'animazione si sta verificando per l'intera riga e non per l'icona del segno di addizione e quindi fila separatamente, come la prima riga.
Ecco un breve run-down del mio codice, ma penso che fornire un collegamento al file di classe potrebbe essere migliore.
Quando si preme un pulsante di modifica sulla barra degli strumenti, chiamo il metodo setEditing:animated:
. In questo metodo, faccio quanto segue ...
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// keep the table in the same editing mode
[_table setEditing:editing animated:animated];
if (editing) {
[_table insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
} else {
[_table deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}
}
Questo è dove si verificano le animazioni di inserimento. Ho provato a completare il tutto in [_table beginUpdate] e endUpdate, oltre all'inserimento delle righe. Né sembra produrre l'animazione pulita che sto puntando.
Qualche idea di cosa potrei mancare? Il file di codice complesso è qui:
Grazie
È troppo localizzato? So che c'è un modo per mantenere sincronizzate queste animazioni, perché vedo che altre app lo fanno. – Ryan
prova a spostare [super setEditing: editing animato: animato]; alla fine del metodo setEditing –
+1 per la gif animata! –