首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保在UIActivityViewController呈现时UIActivityItemProvider的项目是就绪的?

如何确保在UIActivityViewController呈现时UIActivityItemProvider的项目是就绪的?
EN

Stack Overflow用户
提问于 2013-02-23 02:56:16
回答 1查看 788关注 0票数 0

根据文档,[UIActivityItemProvider item]是在辅助线程上运行的。这对于不锁定UI来说很棒,但我发现它并不总是在item显示时完成,例如在邮件撰写屏幕中。

我正在生成一个UIImage并将其保存到磁盘,以返回一个NSURL。在较长时间运行的图像生成任务中,当它呈现给用户时,它是不完整的。我试过将它强制放到主线程上,但它仍然会发生。

如何确保item是完整的?

EN

回答 1

Stack Overflow用户

发布于 2013-03-29 10:51:12

这可以通过使用布尔值来保存项目的返回,直到文件的构建完成。如果您想要在主视图上显示进度或活动指示器,可以通过从主线程调用它来实现。这是一个实际操作的代码片段:

使用此函数在提供程序中设置Activity view Controller,以便加载进度视图。

代码语言:javascript
复制
self.parentViewController = parentVc;

下面是带有阻塞和反馈视图加载的项目函数。

代码语言:javascript
复制
self.wait = true;

[self prepareFile:^(){
    [self performSelectorOnMainThread:@selector(dismissProgressView) 
                                  withObject:nil waitUntilDone:NO];
}];

[self performSelectorOnMainThread:@selector(loadProgressView) 
                                  withObject:nil waitUntilDone:NO];

while (self.wait) {
    [self performSelectorOnMainThread:@selector(updateProgressView) 
                                         withObject:nil waitUntilDone:NO];
}

return self.completedUrl;

然后,您可以创建在主线程上调用的三个函数,以显示进度视图,并在等待文件完成时更新进度视图。在dismissProgressView函数的实现中,确保在dismissViewController完成时将等待布尔值设置为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15031262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档