dispatch_queue_t и TableView

Я новичок в языке 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, он работает хорошо.

У кого-нибудь есть идея?

Заранее спасибо!


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