objective-c - 让按钮覆盖其他进程

标签 objective-c ios cocoa-touch uibutton viewdidappear

在我的应用程序中, Root View Controller 从 Internet 获取信息,对其进行解析,并将其显示在 viewDidAppear 中。 .我使用这种方法是因为我的应用程序嵌入了 UINavigationController这样,当用户按下后退按钮并弹出到 Root View 时, Root View Controller 将重新加载其数据。

发生这种情况时,需要一些时间来获取和显示来自 Internet 的信息。在此期间,如果用户单击按钮移动到不同的 View ,则在 View Controller 完成获取 Web 数据的过程之前,不会发生按钮 Action 。

我怎样才能使按钮覆盖其他进程并立即切换 View ?这安全吗?提前致谢。

编辑

这是我从站点中获取信息的部分示例(我的应用程序解析 HTML)。

NSURL *siteURL = [NSURL URLWithString:@"http://www.ridgefield.org/ajax/dist/emergency-announcements"];
NSError *error;
NSString *source = [NSString stringWithContentsOfURL:siteURL 
                                            encoding:NSUTF8StringEncoding
                                               error:&error];

最佳答案

这是苹果人会追捕的地方,“不要阻塞主线程!”。

这种工作流的主要建议是使用单独的线程(读取:队列)从网络加载数据。然后完成加载的工作人员可以在您的 View Controller 上设置一些属性,并且在该 setter 内部是应该更新 UI 的地方。请记住在主线程上调用 setter。

有几种方法可以剥去并发猫的皮肤,但是这个特定问题的答案使它们超出了范围。简短的回答是不要在主线程中加载,这应该会引导你到正确的地方。

关于objective-c - 让按钮覆盖其他进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143228/

相关文章:

ios - Creative SDK 图像组件 - 图像编辑器 UI

iphone - cocoa touch 的日历控件

ios - 从Instagram获取照片

ios - 如何从 URL 方案中获取参数。

iphone - 在 iphone 中的两点之间画线?

iphone - 设置 View Controller ivar 的最佳位置是什么?

ios - 直观地对标签和按钮进行分组

objective-c - XCode 4 无法编译非常大的数组,以及有关 NSArray/NSString 开销的问题

ios - 将 Sprite 移动限制为垂直和水平

iOS:如果应用程序未打开,苹果通用链接?