Я не уверен, что правильно понял ваш вопрос, поэтому, пожалуйста, попробуйте предоставить более подробную информацию, и я отредактирую свой ответ, если необходимо.
У вас должен быть отдельный экземпляр NSXMLParser для каждого файла XML, который вы хотите проанализировать. В вашем случае, вероятно, должен быть один экземпляр NSXMLParser в каждом из контроллеров представления на панели вкладок.
Вы можете запустить их все, даже используя один и тот же NSXMLParserDelegate для всех них, потому что все методы делегата сообщают вам, какой экземпляр NSXMLParser вызвал их.
Edit:
Вы должны переместить этот код в контроллеры представления на контроллере панели вкладок:
NSURL *url = [[NSURL alloc] initWithString:@"..."];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
//Initialize the delegate.
XMLParser *parser = [[XMLParser alloc] initXMLParser];
//Set delegate
[xmlParser setDelegate:parser];
//Start parsing the XML file.
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error Error Error!!!");
кроме этой строки (сохраните ее в appdelegate и передайте ссылку на нее во все контроллеры представления на контроллере панели вкладок, которые должны что-то анализировать):
XMLParser *parser = [[XMLParser alloc] initXMLParser];
Затем установите синтаксический анализатор (экземпляр NSXMLParser) как свойство на ваших контроллерах представления и внутри проверки xmlParse, который из анализаторов вызвал делегат, и действуйте соответственно. Например:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if (parser == firstViewController.parser) {
// first tab called this parser delegate method, insert code to parse it here
} else if (parser == firstViewController.parser) {
// second...and so on
}
}