0

我有一个包含两个部分的 tableView 控制器。第一部分有几个输入字段,并没有真正显示核心数据。第二部分显示使用 Core Data 保存的数据库中的项目。

我有一个,NSFetchedResultsController我为以下提供数据。对于 section = 0,我手动提供适当的输入字段,对于 section = 1,我想使用. () 但是,由于获取的结果控制器只知道一个部分,所以这不起作用。cellForRowAtIndexPathdidSelectRowAtIndexPath[fetchedResultsController objectAtIndexPath:indexPath]

我知道我可以使用 section = 0 创建一个新的 IndexPath,然后将其提供给NSFetchedResultsController. 这是首选的解决方案还是有另一种方式来“告诉”NSFetchedResultsController预期的结果?

4

2 回答 2

1

为什么你需要告诉它任何事情?在委托方法中,只需将节索引偏移一就可以了。

您可以创建自己的NSIndexPath实例以传递NSFetchedResultsController给解决此问题。

更新

如果你想有两个部分,那么是的,这是正确的答案。但是,我会考虑将您的输入字段放入表头而不是部分。在我看来,这将是一个更清晰的答案。

于 2010-06-30T03:22:47.613 回答
1

这样做的唯一方法是将NSIndexPath传递给各种UITableViewDataSource/UITableViewDelegate方法的对象转换为适合您的NSFetchedResultsController. 我建议向您的类添加一个方法来执行此操作。

此方法的返回值将匹配NSFetchedResultsController使用的节号。此外,如果将来由于某种原因您最终需要第二个标题部分,那么调整您的方法很容易做到这一点。

于 2010-06-30T14:46:15.483 回答