UITableViewCell在显示时没有刷新?

时间:2010-11-22 12:11:04

标签: cocoa-touch uitableview core-data ios uikit

我对UITableView / UITableViewCells有一个非常奇怪的问题。

我有一个简单风格的UITableView,它显示一个对象列表(对于参数,比如说MenuItemsViewController),它有一个名为ItemViewController的子对象。当用户在MenuItemsViewController中选择一个对象时,MenuItemsViewController只更改ItemViewController上的menuItem属性。

当用户选择他们的第一个项目时,一切都显示正常。但是,在随后选择其他项目时,ItemViewController的第一部分中的数据不会改变 - 即它仍然显示第一个项目的属性。我在tableView:cellForRowAtIndexPath:tableView:willDisplayRowAtIndexPath:方法的末尾设置断点,并在显示单元格时显示它们显示textLabel / detailTextLabel属性都是正确的 - 即在内部它们具有完全相同的状态'应该。但是,UITableView仍然没有显示正确的信息。

感谢任何帮助 - 这个问题让我感到疯狂。我现在正在录制视频并将视频上传到YouTube以进行演示,因为这是一个奇怪的问题,我认为人们可能会误解我的要求。

修改:和视频 - http://www.youtube.com/watch?v=AwHTaHCQtX8&feature=youtube_gdata_player

编辑#2:所以,这是疯了:在经过6个小时的调试和测试之后,事实证明动画问题是由于NSManagedObject上的getter调用出现故障...我有否< / em>想法为什么。没有。我想现在这是一个核心数据问题,所以我将其添加为标签。

2 个答案:

答案 0 :(得分:0)

您必须告诉表视图其内容已更改。可能的解决方案是将[self.tableView reloadData]添加到ItemViewController的viewWillAppear:方法。

但我强烈建议您覆盖menuItem属性并添加代码以分别使用reloadRowsAtIndexPaths:withRowAnimation: / reloadRowsAtIndexPaths:withRowAnimation:重载已更改的单元格/部分。

答案 1 :(得分:0)

当您在第一个表视图中选择一个项目时,它应该创建一个新的子视图控制器并将NSManagedObject传递给子项以进行填充。当您从客户端弹回到父级时,该子级应该被取消。我怀疑您正在尝试重新使用子视图控制器(基于您的视频),否则您将不会遇到此问题。

让我们从那里开始。你能否证实这实际上是你在做什么?如果没有,为什么不呢?