У меня есть UITableViewController с Segue, где я пытаюсь получить выбранный ряд:indexPathForSelectedRow возвращение ноль
-(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.)
Для меня я отменил выбор. «Doh! – Baub