0
我试图获取JSON数据并将其解码,同时取消隐藏显示UIActivityIndicator
和UILabel
(@“搜索... “),所以用户知道该应用程序正在搜索。iOS - 多线程 - 显示视图与搜索...并同时执行代码
下面是它如何工作:
- 用户点击“搜索按钮”
IBAction
方法取消隐藏查找视图,并获取和数据同时解码(我可以单独做这些,不在一起)。- 搜索完成后,使用
[self performSegueWithIdentifier:]
将新视图推入堆栈。
我试过使用dispatch_queue,但这样做不会让我使用push到堆栈上的新视图,而完全绕过其他代码(至少是我这样做的方式)。我被告知要使用NSConnection
,但我已经看过API,并且对于如何使用它来完成此操作一无所知。
dispatch_queue_t myQueue = dispatch_queue_create("myQueue", NULL);
dispatch_async(myQueue,
^{
//...URL Request, parse JSON, etc.
dispatch_async(dispatch_get_main_queue(),
^{
searchingView.hidden = NO;
[spinner startAnimating];
});
});
[self performSegueWithIdentifier:@"aSegue"];
这种方式跳过所有的代码,并立即执行segue。 如果我把它放在dispatch_queue里面的代码的其余部分,它执行代码,但不执行segue。最后,使用这种方法,它首先执行搜索,然后显示视图。我需要相反的。
任何帮助,非常感谢!
“我试过使用dispatch_queue,但这样做不会让我使用将新视图推入堆栈而不绕过其他代码(至少是我这样做的方式)。”你能更好地解释这部分吗?我没有看到问题,但你似乎看到一个问题。 –
@FábioOliveira添加上面的代码作为示例,并随后解释问题。 – jpcguy89
我认为thelaws已经发布了一个正确的答案。您更新UI以通知搜索正在进行,获取JSON并在后台处理它,并在完成后更新主线程中的UI。 –