iOS UITableView和Master-Detail视图

时间:2013-09-10 15:20:00

标签: ios objective-c uitableview insert master-detail

我正在开发类似于应用程序的Master-Detail(适用于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;

但没有任何反应......可能是因为新插入的项目没有时间出现在表格视图中?

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

尝试添加[tableView reloadData]:

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

修改

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

[tableView.delegate tableView didSelectRowAtIndexPath:indexPath];