Eu tenho um costume UITableView
usando UITableViewCell
s. Cada um UITableViewCell
tem 2 botões. Clicar nesses botões alterará uma imagem dentro de uma UIImageView
célula.
É possível atualizar cada célula separadamente para exibir a nova imagem? Qualquer ajuda é apreciada.
objective-c
uitableview
Assistente do iOS
fonte
fonte
[NSArray arrayWithObject:]
.beginUpdates
eendUpdates
são desnecessários.Tentei ligar
-[UITableView cellForRowAtIndexPath:]
, mas isso não funcionou. Mas, o seguinte funciona para mim, por exemplo. Eualloc
erelease
oNSArray
para gerenciamento de memória apertado.fonte
Rápido:
fonte
reloadRowsAtIndexPaths:
está bem, mas ainda forçará osUITableViewDelegate
métodos a serem disparados.A abordagem mais simples que posso imaginar é:
É importante chamar sua
configureCell:
implementação no thread principal, pois ele não funcionará no thread que não seja da interface do usuário (a mesma história comreloadData
/reloadRowsAtIndexPaths:
). Às vezes, pode ser útil adicionar:Também vale a pena evitar o trabalho que seria feito fora da visualização atualmente visível:
fonte
Se você estiver usando TableViewCells personalizados, o genérico
não responde efetivamente a essa pergunta, a menos que você saia da visualização atual e volte. Nem a primeira resposta.
Para recarregar com êxito sua primeira célula de exibição de tabela sem alternar exibições , use o seguinte código:
Insira o seguinte método de atualização, que chama o método acima, para que você possa recarregar apenas a célula superior (ou a visualização da tabela inteira, se desejar):
Agora que você ordenou isso, dentro do seu
viewDidLoad
adicione o seguinte:Agora você tem um recurso personalizado da tabela de atualização que recarregará a célula superior. Para recarregar a tabela inteira, adicione o
[self.tableView reloadData];
ao seu novo método de atualização.Se você deseja recarregar os dados toda vez que alternar as visualizações, implemente o método:
fonte
Swift 3:
fonte
Apenas para atualizar um pouco essas respostas com a nova sintaxe literal no iOS 6 - você pode usar Paths = @ [indexPath] para um único objeto ou Paths = @ [indexPath1, indexPath2, ...] para vários objetos.
Pessoalmente, descobri que a sintaxe literal de matrizes e dicionários é imensamente útil e economiza muito tempo. É apenas mais fácil de ler, por um lado. E elimina a necessidade de nada no final de qualquer lista de vários objetos, que sempre foi um bugaboo pessoal. Todos nós temos nossos moinhos de vento para inclinar, sim? ;-)
Só pensei em jogar isso na mistura. Espero que ajude.
fonte
Aqui está uma extensão do UITableView com o Swift 5:
Ligue com
fonte
Preciso da célula de atualização, mas quero fechar o teclado. Se eu usar
o teclado desaparece
fonte