Ho alcune regole piuttosto complicate per lo spostamento di righe in un UITableView
. Esistono un numero indefinito di sezioni e righe per sezione e, in base a varie regole, le righe possono essere spostate all'interno o tra sezioni dell'utente in posizioni specifiche.Blocco durante il tentativo di spostare righe UITableView
Tutti i dati di aggiornamento e tutto funziona. Ma occasionalmente, dopo aver spostato una riga, l'app si spegnerà e improvvisamente ci sarà uno spazio vuoto dove dovrebbe essere visualizzata una riga.
sto usando:
- (NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
per specificare in cui l'utente è autorizzato a trascinare i file in base a dove la cella è. Il 98% delle volte funziona. Ma in alcuni casi, quando l'utente può trascinare solo le sezioni (impossibile riordinare le righe all'interno della sezione), viene visualizzato questo errore, quindi l'app si arresta in modo anomalo dopo aver fatto scorrere l'area senza righe.
L'eccezione generata è abbastanza inutile:
terminazione app a causa di eccezione non identificata 'NSRangeException', la ragione: '*** - [NSCFArray objectAtIndex:]: indice (6) al di là di confini (6)
Nessuno del mio codice è in pila. L'ultimo metodo UITableView-specifico è
-[UITableView(UITableViewInternal) _visibleCellForGlobalRow:]
Qualcuno ha visto questo problema si verifica prima? Qualche idea?
Hai mai risolvere questo Ed? Non c'è una risposta contrassegnata corretta e sto vedendo gli stessi problemi. – coneybeare
No, non ho mai risolto questo problema. Ho dovuto allentare le regole che governano il punto in cui è possibile trascinare una riga in modo che non avvenga –
Stai facendo qualsiasi tipo di operazione di ricarica (come reloadData, reloadSections o reloadRowsAtIndexPath) nel tuo metodo moveRowAtIndexPath? Stavo avendo lo stesso tipo di problema, e ho provato a fare una ricarica in un performSelector ritardato come suggerito da Tom S. in basso, e sembrava funzionare, tranne che ho messo il ritardo a 1 secondo per mantenere iPhone 3.x, 4 .x, e il simulatore felice. È un po 'hacker essere sicuro. –