Индикатор активности не останавливается на том же методе

В методе viewDidLoad я инициализирую ActivityIndicatorView, а затем в следующем методе отправляю индикатор активности для запуска. Когда я запускаю приложение, и оно запускает оператор if, запускается индикатор активности, но когда выполняются операции в очереди отправки, activityIndicator не останавливается. Вот способ:

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    if([indexPath row] == [_myArray count]-2){

        [_activityIndicator startAnimating];

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

            //Here I perform some operations

            [self.tableView reloadData];

            [_activityIndicator stopAnimating];
        });
    }
}

Желаю, чтобы индикатор активности останавливался после выполнения операций в очереди на отправку!


person Pinturikkio    schedule 04.04.2014    source источник


Ответы (2)


Вы должны выполнять свои операции пользовательского интерфейса только в основном потоке. Попробуйте провести рефакторинг:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

    //Here I perform some operations

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];

        [_activityIndicator stopAnimating];

    });
});
person Krivoblotsky    schedule 04.04.2014

Все ваши операции с пользовательским интерфейсом должны выполняться в основном потоке. Вероятно, в этом проблема.

person rounak    schedule 04.04.2014