2012-03-10 15 views
6

Mam wrażenie, że jest to problem wymagający szczególnej uwagi ... moje Google-fu jest całkiem niezłe, ale nie udało mi się uzyskać niczego użytecznego.Niepowodzenie asercji dla UITableView selectRowAtIndexPath

To jest najprostsza rzecz, a mimo to wydaje mi się, że nie rozumiem, z czym jest problem.

Mam UITableView. To jest subview, który mój VC nazywa _form. Używam go do celów stylizacyjnych, a nie do wyświetlania danych. Ma 2 komórki.

W przypadku niektórych zdarzeń próbuję wybrać inną komórkę, używając opcji selectRowAtIndexPath: animated: scrollPosition.

Kiedy to zrobię, to SIGABRTS.

Prosty przykład:

- (IBAction)submitClicked:(id)sender 
{ 
    [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; 
    NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; 
    NSLog(@"%d", [[_form indexPathForSelectedRow] row]); 
    [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; 
} 

tytuł przycisk zostanie zmieniony, a wydrukowana tabela że wybrany wiersz jest 0 lub 1, ale na próbach, aby wybrać żądaną komórkę, przerywa:

2012-03-09 21:57:39.905 <omitted>[16329:207] 0 
2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 
(gdb) 

Moje założenie jest takie, że sugeruje, że coś jest nie tak z konfiguracją mojego stołu, ale nie jestem pewien co. Zaznaczanie komórek w tabeli normalnie (kliknięcie) działa, jak wskazuje oczekiwana odpowiedź w mojej tableView: didSelectRowAtIndexPath. Wszystko inne działa dobrze z tym, jak mam tę konfigurację, z wyjątkiem tego.

(Również, inni odpowiadanie z dodatkową informacją debugowania, a nie tylko "(gdb)". W jaki sposób mogę otrzymać?)

Dzięki!

Odpowiedz

18

Ścieżka indeksu dla komórki widoku tabeli musi zawierać zarówno wiersz, jak i sekcję. Spróbuj utworzyć ścieżkę indeksu za pomocą metody fabrycznej (zdefiniowanej w NSIndexPath UIKit Additions) w następujący sposób:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES]; 
+0

Dzięki, wow to frustrujące. To właśnie dostaję za poleganie za dużo na tym, co podpowiada mi podpowiedź do kodu. Nigdy tego nie sugerował. > :-( – Liandri

Powiązane problemy