1

我正在开发一个类似主细节的应用程序(适用于 iPhone 和 iPad),在插入新项目时我无法重现 Notes 本机应用程序的相同行为。此外,我在 Google 上没有找到任何有趣的帮助。在插入时,我想将用户重定向到新插入项目的详细视图。我试图在控制器的 didChangeObject: 方法中调用 selectRowAtIndexPath: ,如下所示:

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
   atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
  newIndexPath:(NSIndexPath *)newIndexPath
{
    UITableView *tableView = self.tableView;

    switch(type) {
        case NSFetchedResultsChangeInsert:
            [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            [tableView selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
            break;

但是什么都没有发生...可能是因为新插入的项目没有时间出现在表格视图中?

提前感谢您的帮助

4

1 回答 1

0

尝试添加[tableView reloadData]:

[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView reloadData];
[tableView selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];

编辑

scrollToRowAtIndexPath仅突出显示单元格,不会触发didSelectRowAtIndexPath,尝试通过以下方式手动调用它:

[tableView.delegate tableView didSelectRowAtIndexPath:indexPath];
于 2013-09-10T15:29:21.377 回答