我想在从互联网上搜索时显示活动指示符。但是怎么能 我知道iphone已经从互联网上得到了响应以停止动画活动指示器? 有什么方法吗?
答案 0 :(得分:0)
查看NSURLConnection的委托方法。特别是connection:didReceiveResponse:
和connectionDidFinishLoading:
在connection:didReceiveResponse:
委托方法下,您可以显示网络活动指示符,如下所示:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
//...
}
然后将其隐藏在connection:DidFinishLoading:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
//...
}
如果连接尝试失败,您还应该在connection:didFailWithError:
中隐藏它。
答案 1 :(得分:0)
为了解决这个问题,我创建了一个单例连接管理器类,它将完成设置和发送url连接的工作。它基本上通过自身路由连接,拦截委托调用。它将每个url连接保留在一个数组中,并使用连接字典>传回委托调用。委派。
当它收到url的委托调用时,它会向连接的“真正”委托发送消息,并从数组和字典中删除连接。
这样,您始终可以知道是否打开了连接(因为连接数组不为空)并且可以显示指示符。通过这种方式,您可以发送许多连接,并且仍然保证在连接时始终显示指示符,并且在没有连接时从不显示指示符。
我的实现可以在Bitbucket上找到,它使用我自己的NSURLConnection子类,为每个连接添加唯一键。