Ho un UITableViewController con un segue in cui sto cercando di ottenere la riga attualmente selezionata:indexPathForSelectedRow ritorno nullo
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"EditFilterElementSegue"]){
// Get the element that was clicked and pass it to the view controller for display
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
Element *element = [fetchedResultsController objectAtIndexPath:selectedIndexPath];
FilterElementTableViewController *vc = segue.destinationViewController;
vc.filter = filter;
vc.element = element;
}
}
Il problema è indexPathForSelectedRow sta tornando a zero. I documenti dicono che nil viene restituito "se il percorso dell'indice non è valido". Se aggiungo:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
selectedIndexPath = [self.tableView indexPathForSelectedRow];
selectedIndexPath è valido. Quindi, attualmente sto assumendo che la riga sia in qualche modo non selezionata. Qualcuno può dirmi come capire se questo è il caso e cosa potrebbe causarlo?
Questo codice ha funzionato bene fino a quando non sono stato convertito in NSFetchedResultsController (che altrimenti funziona). Io uso anche indexPathForSelectedRow in molti altri controller di visualizzazione tabella dove funziona bene (uno dei quali usa anche NSFetchedResultsController).
Ho anche provato a spezzare didSelectRowAtIndexPath, ma la stessa cosa accade lì. (Previsto dal momento che è chiamato dopo prepareForSegue.)
Per me stavo deselezionando la mia riga. 'Doh! – Baub