problema NSTableView excluir última linha

votos
1

Tem sido um tempo desde que eu errei com meu TableViewController por isso estou um pouco enferrujado ... mas agora eu gostaria de configurá-lo de modo que quando uma seção tem zero linhas para mostrar (array está vazio), então ele vai mentira para o controlador e retornar 1 para numberOfRowsInSection. Em seguida, no cellForRowAtIndexPath ele vai colocar um UILabel sobre a célula de um só linha que diz algo para o efeito de esta seção está vazia.

O problema é quando a tabela está em modo de edição e usuário exclui a última linha eu recebo o seguinte erro:

Encerrando aplicativo devido a exceção não capturada 'NSInternalInconsistencyException', razão: 'update inválido: número inválido de linhas na seção 1. O número de linhas contidas em uma seção existente após a atualização (1) deve ser igual ao número de linhas contidas nessa secção antes da atualização (1), mais ou menos o número de linhas inseridas ou eliminados a partir dessa seção (0 inserido, 1 excluído).

Parece estar chateado que, após o furto-to-excluir uma linha ao tentar redesenhar a tabela que considera que última linha ainda está lá. Onde / como eu deveria estar lidando com isso? Certamente eu estou cagando todo HIG da Apple, até certo ponto, mas é confuso para os meus usuários tenham apenas um cabeçalho de uma seção vazia ...

obrigado!

Publicado 27/08/2009 em 00:19
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você precisa realmente inserir a sua linha "fake" usando -insertRowsAtIndexPaths:withRowAnimation:. Do ponto de vista do UITableView, não há linhas "reais" ou linhas "falsas". Há qualquer que seja a fonte de dados linhas diz que existem. Então você tinha uma fila, e, em seguida, você excluiu uma linha, e depois UITableView perguntou-lhe "quantas linhas estão lá" e você disse 1, e UITableView disse: "1 -. 1 = 1. Espere, o que Blam"

Se você quiser inserir uma linha ( "real" ou "falso" é tudo a mesma coisa), você precisa dizer a UITableView você está inseri-lo.

Respondeu 27/08/2009 em 00:47
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more