【问题标题】:Table not updating when datasource is updated更新数据源时表未更新
【发布时间】:2011-04-01 02:20:45
【问题描述】:

我有一个标签栏控制器 + UINavigation 控制器应用程序。 在标签 1、2、3 中,我有表格视图,为用户提供一些可供选择的项目。一旦用户选择了他们被添加到购物车的项目。 Tab 4 是显示购物车中商品的表格。

我注意到,当用户在标签 1、2 或 3 中选择项目时,他们会在第一次点击时在购物车标签中显示 ip。

如果用户随后返回标签 1、2、3 并选择更多商品,则“购物车”标签中的表格不会更新。

我不确定为什么会这样。我已经在“Cell for Row @IndexPath”方法中进行了编程,以在每次调用此方法时从数据源获取数据。

我很困惑。想知道我在这里是否缺少明显的东西?

感谢您的帮助

【问题讨论】:

标签: iphone objective-c


【解决方案1】:

该表仅在两种情况下更新其数据。

  1. 您正在使用“NSFetchedResultsController”来弥合数据与视图之间的差距。当底层数据发生变化时,该控制器会自动更新视图(同样,当它从视图接收到添加/编辑/删除请求时会自动更新数据)。

  2. 您可以在自己的代码中手动处理这一切,最重要的是在数据源中的数据发生更改后调用UITableViewreloadData 方法。

【讨论】:

  • 啊。我看到了接受是如何工作的。对不起,如果我之前没有接受。我刚开始使用这些在线论坛
  • 是的,这就是我所缺少的。重新加载数据方法。我没有那样做。我会尝试这种方法。谢谢
  • 快速提问。我查找了 NSFetchedResultsController ,看起来只能将它与 Core Data 一起使用。我没有使用核心数据。我将我的数据保存在处理 tableview 的模型对象中。基本上我将我的选择添加到模型对象中的数组中。然后我只是使用该数组来获取数据以填充我的选项卡 4 视图。另外,我应该把 [tableview reloaddata] 放在 View did load 还是其他地方?
  • @user657514 viewWillAppear 是一个更好的地方,因为 viewDidLoad 仅在必须从头开始构建视图时才被调用,这只发生在它第一次创建并且系统由于内存限制而转储视图时稍后显示。顾名思义,viewWillAppear 会在每次视图出现时被调用。但是,如果您跟踪是否需要调用它会更好,例如指示视图已过时的标志:如果表很大或很复杂,reloadData 可能会占用大量 CPU。仅在需要时重新加载 willAppear。
  • 我明白了。非常感谢,这正是我想要的。
【解决方案2】:

您必须重新加载表格视图中的数据朋友。

[你的表重载数据];

在您想要显示数据的地方使用它

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多