在加载detailsView之前等待操作完成

时间:2011-08-02 11:56:07

标签: iphone objective-c cocoa-touch

在我的应用中,我正在从detailsView加载tableView。我需要获取一个XML文档(使用SOAP),解析它,然后显示我在detailsView中获得的信息。因此,在加载我的detailsView时,我想等待解析器在显示我的detailsView之前解析整个文档。

在我的解析器中,我正在使用NSURLConnection,以及NSXMLParserDelegate的方法,如parserDidStartDocument等...

我曾想过使用线程,但我没有得到任何结论。

我想明确我想做什么,但这很难:s

如果需要,我会提供更多信息。

1 个答案:

答案 0 :(得分:0)

您可以在viewDidLoad或viewWillAppear方法中执行此操作,但您必须隐藏所有detailview的控件,直到它从服务器加载数据,然后在您从解析器获得响应时显示它的响应时显示它。您可以在解析响应时显示加载指示符。你需要异步调用你的url。

在viewWillAppear方法中执行类似的操作:

NSURL *url = [NSURL URLWithString:@"www.yourwebserviceurlhere.com"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

实施连接委托方法。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;

在FinishLoadingData之后,您需要通过实现XMLParser委托方法来解析数据,并且在完成解析后需要显示详细视图。

就是这样。希望这有帮助。