【发布时间】:2012-01-31 01:30:51
【问题描述】:
我有一个带有 segue 的 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。文档说“如果索引路径无效”返回 nil 。如果我添加:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
selectedIndexPath = [self.tableView indexPathForSelectedRow];
selectedIndexPath 有效。所以,我目前假设该行以某种方式被取消选中。谁能告诉我如何确定是否是这种情况以及可能是什么原因造成的?
在我转换为使用 NSFetchedResultsController 之前,这段代码运行良好(否则它可以工作)。我还在其他几个可以正常工作的表视图控制器中使用 indexPathForSelectedRow(其中一个也使用 NSFetchedResultsController)。
我也尝试过闯入 didSelectRowAtIndexPath,但同样的事情也发生在那里。 (预期,因为它是在 prepareForSegue 之后调用的。)
【问题讨论】:
标签: ios uitableview null