活动指标不会以相同的方法停止

时间:2014-04-04 19:04:56

标签: ios objective-c uitableview uiactivityindicatorview

在方法viewDidLoad中我初始化一个ActivityIndi​​catorView。然后,在下面的方法中,我发送了活动指示符来启动。当我启动应用程序并运行if语句时,活动指示器会启动,但是当执行调度队列中的操作时,activityIndi​​cator不会停止。方法如下:

-(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];
        });
    }
}

我希望在调度队列中执行操作后停止活动指示器!

2 个答案:

答案 0 :(得分:10)

您应该只在主线程上执行UI操作。 尝试重构:

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];

    });
});

答案 1 :(得分:3)

所有UI操作都应该在主线程上完成。这可能是问题所在。