У меня есть UITableViewController с переходом, где я пытаюсь получить выбранную строку:
-(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;
}
}
Проблема в том, что indexPathForSelectedRow возвращает ноль. В документах говорится, что nil возвращается «если путь индекса неверен». Если я добавлю:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
selectedIndexPath = [self.tableView indexPathForSelectedRow];
selectedIndexPath действителен. Итак, я предполагаю, что строка как-то не выбрана. Может кто-нибудь сказать мне, как выяснить, если это так и что может быть причиной?
Этот код работал нормально, пока я не перешел на использование NSFetchedResultsController (который в противном случае работает). Я также использую indexPathForSelectedRow в нескольких других контроллерах табличного представления, где он работает нормально (один из которых также использует NSFetchedResultsController).
Я также пытался взломать didSelectRowAtIndexPath, но там происходит то же самое. (ожидается, так как он вызывается после prepareForSegue.)