Chamando uabableViews Delegate Methods diretamente
-
26-09-2019 - |
Pergunta
Eu estava procurando uma maneira de chamar o método de edição diretamente.
- (void)tableView:(UITableView *)theTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
Tenho toda a minha lógica para animar células manipuladas, remover da minha matriz de modelos etc. neste método. Ele está sendo chamado quando um usuário desliza, adiciona ou rearrange, mas eu gostaria de chamá -lo manualmente/diretamente à medida que um thread em segundo plano altera meu modelo.
Eu construí um NSIndexpath Like So:
NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:1];
Eu simplesmente não consigo descobrir como chamar algo como:
[self.tableview commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:path];
Preciso obter acesso aos métodos deste estilo de estilo simples de outra maneira?
Obrigado:)
Solução
Não vejo por que você não pode chamar esse método, se tudo o que você deseja é para que seu código seja executado. Os documentos dão uma dica pesada de que
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
terá o efeito de chamar esse método de fonte de dados de qualquer maneira. Faria um melhor sentido refatorar seu código desse método em outro método e chamá -lo do método da fonte de dados e de outros lugares do seu código, se é isso que você deseja fazer.
Se você realmente deseja refletir apenas mudanças em seu modelo, ligue [tableView reloadData]
- É para isso que serve.
Outras dicas
Eu não sei com certeza, mas talvez se você ligar para o método
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
Pode ser que o método CommitittitingStyle seja chamado.