如何解决选择UITableView后如何推送加载视图?
| 目前,我无法显示加载视图。过程如下: 在UITableView中选择行 从主视图弹出UITableView 将Loadingview推入mainview 调用使用JSON请求的long方法 问题是当我选择表中的行时,它会在那里暂停直到一切完成。我该如何解决?解决方法
您需要将数据加载到单独的线程上。就个人而言,我要做的是将加载视图推入主视图,然后生成一个新线程来加载数据。数据加载完毕后,您可以编组回UI线程,关闭加载视图,然后显示将在其中显示数据的任何视图。
您的实现将如下所示:
// push loading view..
// spawn thread
[NSThread detachNewThreadSelector:@selector(loadData:) toTarget:self withObject:nil];
-(void)loadData:(id) obj {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// load your data
[self performSelectorOnMainThread:@selector(updateUI:) withObject:data waitUntilDone:NO];
[pool release];
}
-(void)updateUI:(id)data {
// update the data
}
, 使用GCD并发送异步请求,请求完成后转到主线程并执行您想要的操作。
//addProgressIndicator
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_global_queue(0,0),^{
//call your request. Here could be your call back too,depends to architecture of your code
NSDictionary *response = [WebService sendRequest];
dispatch_async(dispatch_get_main_queue(),^{
//removeProgressIndicator
//do what you want after request is finished with your UI
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。