【问题标题】:Loading 50 UITableviews on a Screen Asynchronously在屏幕上异步加载 50 个 UITableview
【发布时间】:2013-07-25 12:06:03
【问题描述】:

就像问题所说的那样。

我尝试了NSOperationQueues,但我对在操作块中执行什么感到困惑。我尝试将函数reloadData 加载到操作队列中,但所有UITableViews 立即出现。

我在上述UITableViews 上使用自定义单元格。

TIA

【问题讨论】:

  • 你尝试过使用 GCD 吗?为此,您可以使用串行调度队列。
  • 除非您同时在屏幕上显示 50 个表格视图,否则您做错了什么。您可能应该有 50 个数据源/单元格委托和一个表视图。保存滚动位置并简单地交换数据以在数据集之间转换。

标签: iphone ios multithreading grand-central-dispatch nsoperation


【解决方案1】:

如果您的数据加载是在后台线程上完成的,您需要确保在触发对 UI 的任何更改之前返回到主线程。所以,当你调用reloadData 时,请确保它在主线程上运行:

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

【讨论】:

  • 谢谢,但表格视图加载正常。只是他们花了很多时间,而且他们都同时出现在页面上。我在那个视图上有 50 个 Tableviws,我希望它们每个都一个一个地加载数据。我尝试将 TableView 的“ReloadData”方法添加到 MaxConcurrentOperations 设置为 1 的操作队列并在后台运行。仍然没有运气。如果我添加这一行会有什么改变吗?因为 TableView 的委托方法总是在主线程上被调用。
  • 您的队列设置听起来不错,但是每个操作都应该在下一个操作开始之前重新加载表视图(在主线程上)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2023-03-14
  • 2013-04-07
  • 2020-03-26
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多