dispatch_queue_t и TableView

Аз съм 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, той работи добре..

Някой има ли идея?

Благодаря ви предварително!


person NoTBleeD    schedule 07.11.2013    source източник
comment
Спирате да анимирате индикатора за активност, но никога не презареждате табличния изглед - защо?   -  person Carl Veazey    schedule 07.11.2013


Отговори (1)


Трябва да презаредите изгледа на таблицата (в същия блок, където скривате индикатора за активност):

[self.tableView reloadData]
person Martin Ullrich    schedule 07.11.2013
comment
Получи се страхотно, благодаря ви много! Имам още много да уча хаха! - person NoTBleeD; 08.11.2013