Pergunta

Eu tenho um UITableView que eu sou o carregamento via JSON. Assim, a minha lógica é a seguinte:

  1. Obter o JSON (NSOperation, chamando de volta ao tópico principal)
  2. No retorno, analisar o JSON, e inserir novos dados na matriz de origem os dados da minha mesa.
  3. Chamada reloadData na TableView para mostrar os novos dados.

A minha pergunta é: Como posso animar a chegada de novas linhas na tabela? Agora eu só tenho todos eles popping à existência de uma só vez, eo que eu quero fazer é torná-los animar no lugar, porque isso parece muito mais frio.

Eu acho que o que eu quero é usar:

 [self.theTableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight];

Mas isso me dá tempo de execução reclamações sobre o tamanho da atualização ser diferente do que o tamanho da fonte de dados.

Estou faltando alguma coisa sobre como esse método deve ser usado? Alguém sabe de um exemplo onde alguém está animando novas linhas na TableView via esse padrão?

Update: Basicamente, eu resolvi isso graças à orientação de Ben, com a seguinte abordagem:

  1. Comece com [self.theTableView beginUpdates];
  2. Quando eu loop sobre minhas entradas no JSON, inseri-los no início da minha matriz, incrementando seu índice de cada vez através do loop.
  3. Chamada insertRowsAtIndexPath cada vez através do loop, como este:

    NSIndexPath * indexPath; indexPath = [NSIndexPath indexPathForRow: [self.theChatEntries indexOfObject: mensagem] Insection: 0]; [Self.theTableView insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: NO];

  4. Final com endUpdates fora do circuito.

Woot.

Foi útil?

Solução

Você está no caminho certo; você precisa para embrulhar as suas chamadas para -insertRowsAtIndexPaths: withRowAnimation:. com um [self.theTableView beginUpdates] e [self.theTableView endUpdates]

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top