2012-01-07 26 views
5

Mam UITableView i harmonogram uruchomiony w tle usuwanie rekordy z podstawowego obiektu danych. Za każdym razem, gdy obiekt jest usuwany Chcę, aby widok tabeli był odpowiednio aktualizowany.Nie można uzyskać deleteRowsAtIndexPaths do pracy

Ale nadal otrzymuję ten denerwujący komunikat o błędzie podczas próby usunięcia wiersza z widoku tabeli.

* Zakończenie aplikację spowodowane nieprzechwyconego wyjątkiem NSInternalInconsistencyException rozum. „Nieprawidłowa ścieżka wskaźnik do użytku z UITableView Index ścieżek przekazanych do widoku tabeli musi zawierać dokładnie dwa wskaźniki określające sekcji i wiersza Proszę używać kategorię na NSIndexPath w. UITableView.h jeśli to możliwe. "

Kod:

NSIndexPath *indexPath = [NSIndexPath indexPathWithIndex:0]; 
NSUInteger row = [indexPath row]; 

NSMutableArray* files = [[NSMutableArray alloc] initWithArray:fileNames]; 
[files removeObjectAtIndex:[indexPath row]]; 
[fileNames dealloc]; 
fileNames = [NSArray arrayWithArray:files]; 

//[self.fileNames removeObjectAtIndex:row]; 
[self.tableDraft deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
withRowAnimation:UITableViewRowAnimationFade]; 

PS: Próbowałem również [tableView reloadData]; ale że niepożądane skutki uboczne, usuwanie wybranego indeksu.

Odpowiedz

21

Czy zastanawiałeś się nad otrzymaniem porady? Twoja ścieżka indeksu nie zawiera zarówno wiersza, jak i komponentu przekroju. Użyj +[NSIndexPath indexPathForRow:inSection:] do utworzenia obiektu ścieżki indeksu, tak, że ma informacje widok tabeli wymaga:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
+4

+1 zgadzam ... to trwa dłużej, aby umieścić to wszystko na SO niż ma to czytać błąd ... to wyraźnie mówi, co robić i dlaczego Przerywa ... –

+0

Dzięki im wciąż się uczę – DevNull

2

Trzeba to wykorzystać:

NSIndexPath * indexPath = [NSIndexPath indexPathForRow: rowIndex inSection : sectionIndex];

0

Zastosowanie jak ten

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:sender.tag-1 inSection:0]; 

CGRect rectOfCellInTableView = [objTableView rectForRowAtIndexPath:indexPath]; 

CGRect rectOfCellInSuperview = [objTableView convertRect:rectOfCellInTableView toView:[objTableView superview]]; 
Powiązane problemy