Tengo un UITableViewController con un segue donde yo estoy tratando de conseguir la fila seleccionada actualmente:indexPathForSelectedRow volver nula
-(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;
}
}
El problema es indexPathForSelectedRow vuelve nula. Los documentos dicen que se devuelve nil "si la ruta del índice no es válida". Si agrego:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
selectedIndexPath = [self.tableView indexPathForSelectedRow];
selectedIndexPath es válido. Por lo tanto, actualmente estoy asumiendo que la fila de alguna manera está siendo deseleccionada. ¿Alguien puede decirme cómo averiguar si este es el caso y qué podría estar causando?
Este código funcionó bien hasta que me convertí a usar NSFetchedResultsController (que de lo contrario está funcionando). También uso indexPathForSelectedRow en varios otros controladores de vista de tabla donde funciona bien (uno de los cuales también usa NSFetchedResultsController).
También intenté romper en didSelectRowAtIndexPath, pero sucede lo mismo allí. (Esperado ya que llama después de prepareForSegue.)
Para mí estaba deseleccionando mi fila. 'Doh! – Baub