在加载视图和从Web下载数据时显示进度轮

时间:2018-10-17 07:52:20

标签: objective-c asynchronous

我正在通过segue调用视图。该视图的表数据源是使用“ setFlights”从父视图控制器发送的。我想在后台运行该表数据源的更新,并在前台显示一个旋转的轮子。但是,我无法使其正常工作……没有异步块,我就可以正确下载表的数据,但是视图被阻止并且没有显示旋转的轮子。像此代码片段中所示,我既没有得到纺车,也没有填充表格。我在做什么错了?

- (void)setFlights:(NSArray *)flights
{
    [ProgressHudView show];
    //SET LABEL
    [ProgressHudView setText:NSLocalizedString(@"DOWNLOADING FLIGHT NUMBERS", nil)];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        _flights = flights;
        _flightInfoForFlight = nil;
        NSMutableArray *tempMutableFlightInfoArray = [[NSMutableArray alloc]init];

        NSString *airline = nil;
        NSString *flightNumber = nil;

        for(NSString *flight in flights){
            airline = [FMOAuthManager getATCAirlineCodeFromFlightEvent:flight];
            flightNumber = [FMOAuthManager getFlightNumberFromFlightEvent:flight];
            NSLog(@"Get flight status for airline: %@, FlightNumber: %@", airline, flightNumber);

            if([FMOAuthManager canDisplayLiveTimesForAirlineCode: airline]){
                NSArray *flightStatus = [[FMOAuthManager sharedManager] getFlightStatusSynchronouslyForAirline:airline andFlightNumber:flightNumber onDate:[NSDate date]];
                for(NSDictionary *flightData in flightStatus){
                    [tempMutableFlightInfoArray addObject:flightData];
                }
            }
        }

        _flightInfoForFlight = [tempMutableFlightInfoArray copy];

        dispatch_async(dispatch_get_main_queue(), ^{

            [ProgressHudView hide];
        });
    });
}

0 个答案:

没有答案