2010-11-22 102 views
1

我有一个非常奇怪的问题与UITableView/UITableViewCells。UITableViewCell没有刷新显示?

我有一个简单的样式的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是动画问题引起故障...我有没有想法为什么。没有。我想现在这是一个核心数据问题,所以我将它添加为标签。

回答

0

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

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

+0

我的代码正确地生成单元格,正如问题所述 - 再次调用reloadData不会帮助 – refulgentis 2010-11-22 13:06:12

+0

您能否显示更新并加载ItemViewController实例的MenuItemsViewController方法的代码? – Kentzo 2010-11-22 13:56:40

0

当你在第一个表格视图中选择一个项目时,它应该创建一个新的子视图控制器并将NSManagedObject传递给子项以供填充。当你从客户端回到父母时,孩子应该得到解除分配。我怀疑你试图重新使用子视图控制器(根据你的视频),否则你不会遇到这个问题。

因此,让我们从那里开始。你能确认这实际上是你在做什么吗?如果不是,为什么不呢?