UITableView - 使用节时延迟更新

时间:2014-04-06 21:25:50

标签: ios uitableview core-data nsfetchedresultscontroller sectionheader

我已经搜索了几天,并继续学习阅读苹果文档和各种教程,但是我遇到的问题似乎无法解决。

我有一个简单的应用程序,可以使用单个核心数据实体(ProjectEntry)跟踪项目。目前所有属性都是字符串。它基本上是Paul Hegarty的核心数据讲座和Tim Roadley的网络教程的组合。

我可以添加和保存实体,并使用数据填充tableview。目前,我正在使用Hegarty在讲座中提供的CoreDataTableViewController子类。我之所以提到这一点,是因为......

当我的UITableView没有被划分为多个部分时,新信息即时#34;添加新条目后,将在UI中显示。但是,当我添加部分(通过sectionNameKeyPath)时,新数据仍然保存,但仅在刷新几次后显示或在刷新前等待30秒(通过Hegarty提供的pull-to-refresh机制)。

tableview委托方法似乎都在工作,NSFetchedResultsController的方法也是如此。过去使用Stanford / Hegarty的CoreDataTableViewController子类已经取得了成功,并且我已经通过实现文件本身学到了很多东西。

控制器嵌入在导航控制器中,托管对象上下文通过prepareForSegue方法在控制器之间传递。一些简单的日志记录显示,最初通过UIManagedDocument获取的托管对象上下文正在成功传递。

我在viewWillAppear中尝试了[self.tableview reloadData]和/或beginUpdates / endUpdates,但延迟仍然存在。

将tableview划分为导致延迟的部分是什么意思?是否有必要在tableview上调用reloadSections?就像我说的那样,条目与Core Data一起保存,fetchedResultsController立即填充未分区的tableview ......

我可能只是遗漏了一些显而易见的东西,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

上面的Warren Burton的评论让我重新检查我的托管对象上下文行为是否在通过prepareForSegue方法在视图控制器之间传递时是否一致。

所以,正如我上面的评论中提到的,它似乎暂时解决了这个问题:

从上面: 初始视图控制器是非tableview,它可以转到UIViewController以添加ProjectEntry,或者segue到UITableViewController,其中列出了已保存的项目条目。此初始视图控制器创建或使用UIManagedDocument。通过设置单行检查以查看UIManagedDoc是否正在此初始视图控制器的viewWillAppear方法中使用,在tableview中显示新节数据的“延迟”似乎停止。在说问题解决之前,我会再测试一下。这样,共享的托管对象上下文似乎通过托管doc-vapul

更好地“绑定在一起”