2012-03-10 16 views
6

Mi sembra che questo sia un problema che richiede un'attenzione speciale ... il mio Google-fu è piuttosto buono ma non sono riuscito a ottenere nulla di utile.Errore di asserzione per UITableView selectRowAtIndexPath

Questa è la cosa più semplice, eppure non riesco a capire quale sia il problema.

Ho un UITableView. È una sottoview che il mio VC chiama _form. Lo sto usando per motivi di stile, non proprio per visualizzare i dati. Ha 2 celle.

Su un determinato evento, sto provando a selezionare una cella diversa, utilizzando selectRowAtIndexPath: animated: scrollPosition.

Quando faccio questo, SIGABRTS.

Un semplice esempio:

- (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]; 
} 

titolo del pulsante viene modificata e le stampe di tabella che la riga selezionata è 0 o 1, ma a cercare di selezionare la cella desiderata, si rompe:

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) 

La mia ipotesi è che questo implica che qualcosa non va con come è configurato il mio tavolo, ma non sono sicuro di cosa. La selezione delle celle nella tabella normalmente (facendo clic su di essa) funziona, come indicato dalla risposta prevista nella mia tabellaView: didSelectRowAtIndexPath. Tutto il resto funziona bene con come ho questo set up, tranne questo.

(anche, altre persone si risponde con le informazioni di debug in più, non solo "(gdb)". Come posso ottenere questo?)

Grazie!

risposta

18

Un indexpath per una cella tableview deve avere sia una riga che una sezione. Prova a creare il vostro percorso indice utilizzando il metodo factory (definito in NSIndexPath UIKit Additions) come questo, invece:

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

Grazie, wow questo è frustrante. Questo è quello che ottengo per essermi affidato troppo a ciò che mi suggerisce il suggerimento del codice. Non l'ha mai suggerito. > :-( – Liandri

Problemi correlati