gpt4 book ai didi

objective-c - 加载数据密集型 View 的屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:16:27 24 4
gpt4 key购买 nike

我是第一次使用核心数据,我的应用程序正在处理大量数据(至少 1000 多个托管对象),因此加载某些 View 需要一段时间。

示例:我有一个 View ,它基本上包含一个 TableView ,其中包含有关特定核心数据实体的信息。该 View 将容纳 10 到 100 多个项目(分组),并且我的加载时间只有几秒钟。基本上这不是真正的问题,但我怀疑当加载 View 时没有任何信息直到它显示时用户会感到恼火。

我将我的数据加载到“viewWillAppear”中,因为每次更改时都必须重新加载它。

问题:如何在加载 View 时显示加载屏幕(进度指示器)?它不一定很花哨,也许只是带有标准进度指示器之一的单色屏幕?

有什么输入吗?

编辑: 我设法将加载时间从大约 3 秒减少到几毫秒,所以我在这个特定项目中不需要它,但无论如何我认为这是一个值得问的问题 =) 所以我仍然对想法非常感兴趣 =)

我已经阅读了本教程:Using AlertView For Progress Indication但我无法在一个小测试项目中调整它以在 View 转换期间使用。

塞巴斯蒂安

最佳答案

您可以在 viewWillAppear 中设置您喜欢的任何占位符 View ,然后生成背景 block 以加载内容。加载内容后,更新屏幕以显示它们:

- (void)viewWillAppear {
[super viewWillAppear];

[self loadPlaceholderSubview];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
[self loadData];

dispatch_async(dispatch_get_main_queue(), ^{
if ([self isStillNeeded])
[self updateSubviews];
});
});
}

一些注意事项:

  • [self isStillNeeded] 是必需的,因为数据正在后台加载,加载完成后 View 可能不再显示在屏幕上(例如,用户可能有导航走了)。您如何检查这取决于您的应用程序的具体工作方式。在某些情况下,它可能就像检查 View 是否仍有 superviewwindow 一样简单。

  • 确保任何接口(interface)更新都发生在主线程上(因此根据操作系统要求分派(dispatch)到 dispatch_get_main_queue())。

关于objective-c - 加载数据密集型 View 的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com