Animações irregulares de deleteRowsAtIndexPaths do UITableView: withRowAnimation:
Resumo: No modo de edição, estou excluindo linhas em uma exibição de tabela usando um controle de edição personalizado, em vez do sinal de menos vermelho padrão e do botão de confirmação de exclusão. Marque uma linha ou várias linhas e, em seguida, toque no botão Excluir na barra de ferramentas. É semelhante ao comportamento visto no aplicativo Mail. Veja a imagem abaixo.
Problema: As animações produzidas por chamadas paradeleteRowsAtIndexPaths:withRowAnimation:
são irregulares. Por exemplo, eis o que acontece quando uso a animação da linha Inferior (ou seja,UITableViewRowAnimationBottom
) para excluir a linha marcada (Assunto nº 7) na captura de tela:
Isso está ocorrendo no simulador e em um dispositivo. O tipo de animação Automático (ou seja,UITableViewRowAnimationAutomatic
) produz o mesmo comportamento irregular ao excluir o Assunto # 7 acima.
O tipo de animação Top funciona conforme o esperado no simulador, mas produz animações inconsistentes e dissonantes em um dispositivo.
A animação do tipo Fade é a única animação que funciona como esperado no simulador e em um dispositivo.
Detalhes:
Estou segmentando o iOS 7 e usando o storyboard, o layout automático puro e os Core Data.
Aqui está o método de ação em que eu apago as linhas:
- (void)deleteButtonTapped:(UIBarButton *)sender
{
// update table view's data
[self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows];
// create index paths for ticked rows
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
[self.indexSetOfTickedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
[indexPaths addObject:[NSIndexPath indexPathForRow:idx inSection:0]];
}];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];
// update Core Data and UI...
}
O que eu tentei:
Substituições da subclasse da célula da tabelalayoutSubviews
. No entanto, as animações irregulares persistem mesmo quando eu comentolayoutSubviews
.
Também removi o controle de edição personalizável das células da tabela e, em seguida, codifiquei a exclusão de uma linha específica no método de ação. As animações irregulares persistiram.
Como sugerido por outros, tentei chamardeleteRowsAtIndexPaths:withRowAnimation:
entre as chamadas parabeginUpdates
eendUpdates
. Isso não resolve o problema.
Alguma sugestão sobre o que fazer a seguir, ou as melhores suposições sobre o motivo de eu estar vendo essas animações irregulares?
Atualização (iOS 7.1):
O problema permanece após a segmentação do iOS 7.1. Continuará a depender da animação de desvanecimento.