2011-09-20 58 views
0

我正在使用NSXMLParser来解析一些xml数据。我使用了一些委托方法一样,如何在Iphone中的NSXMLParser之后重新加载UIView?

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 

这是的NSXMLParser在MYAppDelegate.m,现在我要完成对Home.m解析后重新加载UI,我也开始活动指示灯,当我请求Web服务并在didEndElement中停止它。但是我注意到有时候发现角色不会被调用,而且我的用户界面会被冻结。我想在解析完成后更新我的UI。我如何做到这一点? 在此先感谢。

回答

2

您可以尝试重新加载您的看法:

解析器对象发送给委托时,它已经成功地完成了分析

- (void)parserDidEndDocument:(NSXMLParser *)parser 

由一个解析器对象发送到其委托当它遇到致命错误时。当调用该方法,解析停止

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
+0

我试着在parserDidEndDocument中调用我的UI更新方法,但我没有在foundCharacters中获取任何字符串,并且我的Home.m获取了旧数据的更新。我希望我的UI在得到解析的数据后能够响应。如何实现这一目标? – Panache

+0

我不知道你的应用程序的架构,所以很难给出准确的答案。我可以建议你应该合并这些方法,并在新数据可用时重新加载数据 – Nekto

0

您可以创建一个子类的NSOperation,并尝试解析XML,在该类避免UI冻结更多信息如何实现这一点,看看这里NSOperaion

重绘的UIView电话[self.view setNeedsDisplay];

-1

当你的应用的

- (void)parserDidEndDocument:(NSXMLParser *)parser 

被称为那么你想要做

[self reloadView]; 

或任何你重装方法。