0

我的应用程序中有一个 TableViewController(好几个,但这只发生在这个特定的应用程序上)。

内容是使用 NSFetchedResultsController 从 Core Data 驱动的,TVC 是 NSFetchedResultsControllerDelegate 并使用基于内容更改更新表的方法(即它运行 beginUpdates、endUpdates 等...)。

我以前做过很多次,所以只需使用相同的代码。(也可以在 Ray Wenderlich 的网站上找到)。

无论如何,我有一个视图(从 TVC 推送)将新项目添加到 CoreData 数据库中。然后应该将这个新项目添加到 TVC 的表中。

这一切都很好。我查看表格上下滚动很好。单击添加。添加新项目。推回 TableView,我可以看到新项目...

tableView 现在不允许我一直滚动到底部。我可以通过滚动到底部并按住屏幕来查看表格中的新数据,但是当我放手时,tableView 会弹回来,所以我再也看不到它了。

我检查了几件事...

  1. TableView 的 frame 前后没有变化。
  2. tableView 的 contentSize 确实会更改以适应添加的单元格。
  3. 滚动时,前后的最小 contentOffset 均为 0(这是正确的)。
  4. 滚动时,MAXIMUM contentOffset 前后相同(这是不正确的)。

如果我弹回 rootVC,然后推回 TVC,那么我可以再次滚动并查看所有新单元格。

我做了一些测试。

如果我重新启用自动旋转,- (BOOL)shouldAutorotate然后通过添加新单元格等的动作,我仍然无法滚动到底部。但是,如果我旋转横向然后回到纵向,那么现在我可以一直滚动到底部。

在此之后,我尝试在[self viewWillLayoutSubViews];之后运行该方法,[self.tableView endUpdates];但仍然没有。

就像我说的,我以前做过很多次,没有任何问题。我真的不明白现在发生了什么。

4

1 回答 1

0

我终于找到了一个有效的解决方案!

最后我不得不投入[self.tableView reloadData];viewDidAppear方法中。

这解决了问题。

于 2012-11-02T14:20:55.443 回答