Domanda

E 'stato un po' che ho pasticciato con il mio TableViewController, quindi sono un po 'arrugginito ... ma ora mi piacerebbe impostarlo in modo che quando una sezione ha zero righe da visualizzare (array è vuoto) allora sarà "lie" al controllore e ritorno 1 per numberOfRowsInSection. Poi nel cellForRowAtIndexPath sarà posto un UILabel sopra cellulare quello della riga che dice qualcosa per l'effetto di "questa sezione è vuota".

Il problema è che quando il tavolo è in modalità di modifica e utente elimina l'ultima riga ottengo il seguente errore:

terminale app causa eccezione non identificata 'NSInternalInconsistencyException', ragione: 'aggiornamento non valida: numero non valido di righe nella sezione 1. Il numero di righe contenute in una sezione esistente dopo l'aggiornamento (1) deve essere uguale alla numero di righe contenute in tale sezione prima dell'aggiornamento (1), più o meno il numero di righe inserite o cancellati da tale sezione (0 inserita, 1 soppresso).

Sembra essere sconvolto dal fatto che dopo il colpo da eliminare una riga quando si cerca di ridisegnare la tabella si rileva che l'ultima fila è ancora lì. Dove / come dovrei essere la manipolazione di questo? Certamente sto crapping in tutto HIG di Apple in una certa misura, ma è fonte di confusione per i miei utenti di avere solo un colpo di testa su una sezione vuota ...

grazie!

È stato utile?

Soluzione

È necessario inserire la vostra realtà "falso" -insertRowsAtIndexPaths:withRowAnimation: fila usando. Dal punto di vista di UITableView, non ci sono righe "reali" o le righe "falsi". Ci sono qualunque sia l'origine dati righe dice che ci sono. Quindi hai avuto 1 fila, e poi è stato eliminato 1 riga, quindi UITableView hai chiesto "quante righe ci sono" e lei ha detto 1, e UITableView detto "1 -?. 1 = 1. Attendere, cosa Blam"

Se si desidera inserire una riga ( "vero" o "falso" è lo stesso), è necessario indicare UITableView si sta inserendo esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top