如何在不阻止UI的情况下将内容加载到TableView中?

Ste*_*eve 3 iphone objective-c uitableview nsoperation ios

我正在使用TableView,该控制器从Web Feed下载数据,在此TableView中解析和填充其内容.Feed只提供10个项目的数据块.因此,例如,当有112个项目可能需要大约12个服务器请求时加载数据.我想在没有阻止用户屏幕的情况下发出这些请求,它应该按顺序加载数据,就像它不能加载第5页上的项目,除非它已经获取了前一个(1,2,3,4按照这个确切的顺序)例).

有关如何实现这一点的任何想法?

请事先提供帮助,

斯特凡

Sri*_*aju 5

使您的Web调用异步.不要在主UI线程上进行Web调用......

例如,如果您使用ASIHttp库进行http调用(这是建立在Apple的NSURLConnection之上),那么创建异步请求就像 -

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
Run Code Online (Sandbox Code Playgroud)

当获取数据时,会调用这些选择器回调 -

- (void)requestFinished:(ASIHTTPRequest *)request
{
   // Use when fetching text data
   NSString *responseString = [request responseString];

   // Use when fetching binary data
   NSData *responseData = [request responseData];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
   NSError *error = [request error];
}
Run Code Online (Sandbox Code Playgroud)

这肯定会让你的UI响应......

另请注意,仅在主线程上更新UI元素.从后台线程开始更新ui元素很容易.所以请记住......