在方法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];
});
}
}
我希望在调度队列中执行操作后停止活动指示器!
答案 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操作都应该在主线程上完成。这可能是问题所在。