2015-03-10 7 views
5

Ho impostato l'inserimento di riga con il seguente codice. Sto usando solo UITableViewRowAnimationNone durante l'inserimento e l'eliminazione delle righe, ma a volte, come puoi vedere nella gif qui sotto, la riga si anima dall'alto o dal basso. Per la maggior parte non si anima, come io voglio, ma a volte si anima su inserimento e cancellazione. Non sto parlando della visualizzazione della tabella che si espande per mostrare la cella inserita, voglio dire che la cella sembra scivolare dal basso o dall'alto.UITableViewRowAnimationNone - comportamento come UITableViewRowAnimation (Alto/Basso)

enter image description here

Ecco il metodo che controlla l'animazione inserimento:

- (void)contentHeaderFooterView:(NFContentHeaderFooterView *)headerFooterView sectionOpened:(NSInteger)section{ 

    NSIndexPath *pathToAdd = [NSIndexPath indexPathForRow:0 inSection:section]; 

    [self.tableView beginUpdates]; 
    [self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationNone]; 
    [self.tableView endUpdates]; 

} 

E qui è il metodo che controlla l'eliminazione animazione.

- (void)contentHeaderFooterView:(NFContentHeaderFooterView *)headerFooterView sectionClosed:(NSInteger)section{ 

    NSIndexPath *pathToDelete = [NSIndexPath indexPathForRow:0 inSection:section]; 

    [self.tableView beginUpdates]; 
    [self.tableView deleteRowsAtIndexPaths:@[pathToDelete] withRowAnimation:UITableViewRowAnimationNone]; 
    [self.tableView endUpdates]; 

} 
+0

Stesso problema, sembra essere un bug. – Andy

risposta

0

Ho avuto problemi simili con gli aggiornamenti delle tabelle che non eseguivano l'animazione che ho dato direttamente. Non posso dire con certezza perché, ma una cosa che posso suggerire è, invece di fare una cancellazione di riga specifica tra begin/endUpdates, è possibile solo per un duro reloadData.

0

risposta qui: https://stackoverflow.com/a/37352789/577237

Ripubblicato dal momento che è breve:

[UIView performWithoutAnimation:^{ 
        [self.tableView beginUpdates]; 
        [self.tableView deleteRowsAtIndexPaths:rowsToRemove withRowAnimation:UITableViewRowAnimationNone]; 
        [self.tableView endUpdates]; 
       }]; 

Si noti che questo è iOS 7.0 e versioni successive