Pergunta

Já faz um tempo desde que eu mexi com o meu tabelaviewcontroller, então estou um pouco enferrujado ... mas agora gostaria de configurá -lo para que, quando uma seção tivesse zero linhas para exibir (a matriz está vazia), ela "mentirá" "Para o controlador e retorne 1 para o númerofRowsSinsection. Em seguida, no CellForrowatIndexpath, ele colocará um uilabel sobre a célula de uma linha que diz algo no efeito de "esta seção está vazia".

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

Terminando o aplicativo devido à exceção não capturada 'nsinternalinconSistEncyException', razão: 'Atualização inválida: 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 em que Seção antes da atualização (1), mais ou menos o número de linhas inseridas ou excluídas dessa seção (0 inserido, 1 excluído).

Parece estar chateado que, após o deslize uma fila, ela tenta redesenhar a mesa, descobre que a última linha ainda está lá. Onde/como devo lidar com isso? Certamente estou Capping em todo o HIG da Apple, até certo ponto, mas é confuso para meus usuários ter apenas um cabeçalho sobre uma seção vazia ...

obrigado!

Foi útil?

Solução

Você precisa realmente inserir sua linha "falsa" usando -insertRowsAtIndexPaths:withRowAnimation:. Do ponto de vista do UitableView, não há linhas "reais" ou linhas "falsas". Há quaisquer linhas que o DataSource diz que existem. Então você teve 1 linha e depois excluiu 1 linha e, em seguida, o UitableView perguntou: "Quantas linhas existem" e você disse 1, e o UitableView disse "1 - 1 = 1. Espere, o que? Blam".

Se você deseja inserir uma linha ("real" ou "falsa" é a mesma), você precisa dizer ao UitableView que está inserindo.

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