1

我正在使用分组为部分的数据NSFetchedResultsController填充我的一个。UITableView现在我想在所有由不会被提取的数据创建的提取部分之上添加一个新部分(我正在为此创建一个额外的数组)。有没有一种很好的方法可以在不破坏所有良好NSFetchedResultsController行为的情况下插入该数组?

更新

到目前为止,我尝试的是手动调整indexPath. 当一个方法(即-tableView:numbersOfRowsInSection)被调用时,我会检查它是否是第一部分,如果是,我会从我的数组而不是NSFetchedResultsController. 如果没有,我只需NSIndexPath使用原始indexPath的行和部分 - 1 创建一个新的来访问fetchedResults. 这似乎是一种相当幼稚的方法。至少,这对我不起作用(还)。

谢谢!
-F

4

1 回答 1

3

我创建了UITableViewDataSource一个混合了静态和动态部分的内容。我通过NSIndexPath按照您的计划进行修改来做到这一点。重要的是也修改 的NSIndexPath委托方法中的NSFetchedResultsControllerDelegate

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath
{
    indexPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:kSectionWithAdditionalRowIndex];
    if (newIndexPath) {
        newIndexPath = [NSIndexPath indexPathForRow:newIndexPath.row + 1 inSection:kSectionWithAdditionalRowIndex];
    }

    [super controller:controller didChangeObject:anObject atIndexPath:indexPath forChangeType:type newIndexPath:newIndexPath];
}

该示例取自我的CBUIFetchResultsDataSource.m类的子类,它是UITableViewDataSourceNSFetchedResultsController. 我还必须覆盖-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section,-(id)objectAtIndexPath:(NSIndexPath*)indexPath-(NSIndexPath*)indexPathForObject:(id)object.

于 2012-09-26T20:25:08.187 回答