从“详细视图”返回后如何刷新表格视图?

Posted

技术标签:

【中文标题】从“详细视图”返回后如何刷新表格视图?【英文标题】:How do I refresh a table view after returning from a "detail view?" 【发布时间】:2008-12-07 13:28:29 【问题描述】:

我是 iPhone 和 Apple 开发的新手,正在开发我的第一个应用程序。选择表格中的项目时,只需一个 TableView 和一个“详细视图”即可。

我想要做的是根据我在“详细视图”中采取的一些操作来更改 TableView 中单元格的背景颜色。

当应用程序最初加载时,我在 -cellForRowAtIndexPath: 方法中自定义颜色,但是当用户从我的详细视图导航回来时,该函数没有被调用,所以我的表格视图没有更新颜色。现在获得刷新的唯一方法是退出应用程序并重新启动它。 (我用 NSUserDefaults 坚持他们的选择。)

显然,我希望当表格视图从详细视图返回时刷新,但我不知道如何获取对单元格的引用以及使用哪种方法来执行此操作。我假设它应该进入-viewDidAppear,因为它被称为视图显示的所有内容。

【问题讨论】:

【参考方案1】:

使用[tableView reloadData] - 这将使表格视图在行中运行并自行重建。

【讨论】:

这不会像重新启动应用程序一样刷新 tableview。什么是完全令人耳目一新的,就像启动了应用程序并重新创建了 tableview 一样?【参考方案2】:

你真的应该在 viewWillAppear: 中这样做。

此外,您可以使用其visibleCells 方法获取表格视图的可见单元格。由于表格视图的工作方式,其他单元格根本不存在——滚动将触发委托方法并创建新单元格(如果您使用dequeue...,则将现有单元格出列)。

【讨论】:

【参考方案3】:

我要补充一点,如果它在编辑视图中,然后将一些修改后的信息保存在您的表中,您应该有一个委托来检测数据实际保存的时间,然后重新加载您的表视图。每次您的视图出现时都会触发 viewWillAppear。我认为您所追求的只是在更改数据后您想要刷新表格。

【讨论】:

以上是关于从“详细视图”返回后如何刷新表格视图?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 5 中刷新 JSON 表

重新加载表视图数据并取消选择单元格

从表格视图单元格更新文本并刷新后键盘关闭

更新表格视图单元格中的核心数据值后如何刷新

从联系人意图添加联系人后如何刷新列表视图?

如何从表视图控制器转到详细控制器并返回