我有一个赛格瑞在那里我试图让当前所选行一个UITableViewController:indexPathForSelectedRow返回nil
-(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后调用。)
对我来说,我是取消了我的排。 “卫生署! – Baub 2012-04-26 23:36:17