Iphone 在后台执行API调用之前,如何显示UIActivityIndicator?

Iphone 在后台执行API调用之前,如何显示UIActivityIndicator?,iphone,Iphone,我在viewdidLoad上从我的应用程序调用服务器API,我想在后台执行,直到我想在屏幕上显示UIActivityIndicator,当我得到API响应时,它应该被隐藏。如何做到这一点???我已经有一段时间没有做过很多iOS的东西了,也许有一个方便的课程或其他东西可以帮你做到这一点。但在任何情况下,您都可以执行以下操作 创建一个类来处理远程资源的获取,并让您要从中调用它的类实现一个协议,如MyAPIFetcherDelegate,以及一个在获取完成时将调用的方法(如resourceDidFin

我在viewdidLoad上从我的应用程序调用服务器API,我想在后台执行,直到我想在屏幕上显示UIActivityIndicator,当我得到API响应时,它应该被隐藏。如何做到这一点???

我已经有一段时间没有做过很多iOS的东西了,也许有一个方便的课程或其他东西可以帮你做到这一点。但在任何情况下,您都可以执行以下操作

创建一个类来处理远程资源的获取,并让您要从中调用它的类实现一个协议,如MyAPIFetcherDelegate,以及一个在获取完成时将调用的方法(如
resourceDidFinishLoading
)。然后你做一些类似的事情

- (void)getResource
{
    MyFetcher* fetcher = [[MyFetcher alloc] init];
    fetcher.delegate = self;
    // start/show the UIActivityIndicator
    [NSThread detachNewThreadSelector:@selector(fetchResource:) toTarget:fetcher withObject:nil];
}

- (void)resourceDidFinishLoading
{
    // Stop/Hide the UIActivityIndicator
    // do something with the data that comes back
}
请注意,为了实际处理返回的结果,您可能需要传递一些数据,我是从粗略的内存中键入的,因此可能存在错误。但这是总的想法。从那里,您应该能够从文档中找到它

另外,不要忘记考虑API中的错误。如果超时,您不希望微调器坐在那里拒绝放弃屏幕。


创建NSThread作为调用选择器,如下所示:

[NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:nil];  
// Your code    
[spinner stopAnimating];    
[self.navigationcontroller pushviewcontroller:viewcontroller animated:YES];    
线程开始初始化:

-(void)threadStartAnimating:(id)data    
{    
[spinner startAnimating];    
}