Я новичок в языке Objective-C, и у меня есть небольшая проблема. На самом деле у меня есть 2 TableView, и когда я перехожу от одного к другому, я анализирую XML из Интернета. Анализ идет хорошо, но я хотел добавить UIActivityIndicatorView между этими двумя представлениями, чтобы сообщить пользователю, что что-то загружается. Итак, для этого я хотел выполнить синтаксический анализ в другом потоке и показать UIActivityIndicatorView в основном потоке. Итак, вот мой код:
- (void)viewDidLoad
{
[super viewDidLoad];
UIActivityIndicatorView *activityIndicator;
activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
activityIndicator.center = self.view.center;
[self.view addSubview: activityIndicator];
activityIndicator.startAnimating;
dispatch_queue_t queue = dispatch_get_global_queue(0,0);
dispatch_async(queue, ^{
NSError *error = nil;
// we will put parsed data in an a array
titles = [[NSMutableArray alloc] init];
urls = [[NSMutableArray alloc] init];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:_emissionSelectionnee] options:0 error:&error];
NSArray *nodes = NULL;
nodes = [rssParser nodesForXPath:@"//rss/channel/item/title" error:nil];
for (CXMLElement *title in nodes) {
[titles addObject:[title stringValue]];
}
nodes = NULL;
nodes = [rssParser nodesForXPath:@"//rss/channel/item/enclosure" error:nil];
for (CXMLElement *url in nodes) {
[urls addObject:[[url attributeForName:@"url"] stringValue]];
}
dispatch_sync(dispatch_get_main_queue(), ^{
activityIndicator.stopAnimating;
});
}
}
Итак, теперь отображается UIActivityIndicator, но ячейки пусты. Когда я не использую dispatch_queue_t, он работает хорошо.
У кого-нибудь есть идея?
Заранее спасибо!