Аз съм noobie в езика Objective-C и имам малък проблем. Всъщност имам 2 TableViews и когато преминавам от единия към другия, анализирам някакъв XML от интернет. Анализът върви добре, но исках да добавя UIActivityIndicatorView между тези 2 изгледа, за да кажа на потребителя, че нещо се зарежда. И така, за да направя това, исках да направя анализирането в друга нишка и да покажа 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, той работи добре..
Някой има ли идея?
Благодаря ви предварително!