Update View Controller After connectionDidFinishLoading is Called

℡╲_俬逩灬. 提交于 2019-12-13 03:44:22

问题


I am trying to load web content asynchronously. I am not sure how to update labels/other content in my view controller once the connectionDidFinishLoading method is called. In the sample below, I am just trying to update a label to show that the content has loaded. How would I do this? Thank you!

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"Succeeded! Received %d bytes of data",[responseData
                                                   length]);
    NSString *txt = [[NSString alloc] initWithData:responseData encoding: 
    NSASCIIStringEncoding];

    label.text = @"DISPLAY THIS WHEN FINISHED";  
}

I have been told to let my viewController be the NSURLConnectionDelegate and then to will run the fetchData method from the viewDidLoad and then use the data you get the data for us when it is fetched in the connectionDidFinishLoading. Anyone know where to begin? Thanks!


回答1:


As Ramy correctly pointed you must update your UI on the main thread, then :

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
   NSLog(@"Succeeded! Received %d bytes of data",[responseData length]);
   NSString *txt = [[NSString alloc] initWithData:responseData 
                                         encoding: NSASCIIStringEncoding];

  NSString *text = @"DISPLAY THIS WHEN FINISHED";
  [label performSelectorOnMainThread:@selector(setText:) withObject:text waitUntilDone:NO]
}


来源:https://stackoverflow.com/questions/15039374/update-view-controller-after-connectiondidfinishloading-is-called

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!