MBProgressHUD Условное исполнение - PullRequest
0 голосов
/ 08 января 2012

У меня есть таблица, содержимое которой генерируется с помощью массива json. Он также использует службы определения местоположения, поэтому при изменении местоположения пользователей таблица перезагружается для отражения изменений данных таблицы относительно местоположения пользователей.

Моя проблема в том, что я показываю индикатор активности в начале загрузки представления, но каждый раз, когда местоположение обновляется и таблица перезагружается, отображается индикатор. Это делается в очень короткие промежутки времени, вызывая сбой приложения.

Можно ли поместить условие в следующий код, чтобы он не показывал MBProgressHUD, если это не начальная загрузка, а перезагрузка, вызванная изменениями местоположения?

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
    [self.navigationController.view addSubview:HUD];
    [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];
    return [rows count];
}

Здесь выполняется перезагрузка:

    - (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{

    NSString *lat = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude];

    NSString *longt = [NSString stringWithFormat:@"%f", newLocation.coordinate.longitude];

    //CGFloat Alat = [lat floatValue];
    //CGFloat Alon = [longt floatValue];
    self.aalat = lat;
    self.aalon = longt;
    //        NSLog(@"anlat: %@", aalat);
    //        NSLog(@"anlong: %@", aalon);
    [[NSUserDefaults standardUserDefaults] setObject:aalat forKey:@"latitude"];
    [[NSUserDefaults standardUserDefaults] setObject:aalon forKey:@"longitude"]; 
    [tableview reloadData];
}

1 Ответ

1 голос
/ 30 января 2012

Я бы вызвал HUD из ваших методов viewDidLoad или viewWillAppear для начальной загрузки. Стрельба из таблицы приведет к множеству проблем. Методы tableview запускаются многократно, когда пользователь выполняет прокрутку, поэтому у вас всегда будут проблемы с этим.

Запустите метод из вашего обновления местоположения, чтобы отобразить HUD. В любом случае он должен работать в основном потоке, чтобы анимация работала правильно. Я бы вызвал таблицу перезагрузки из вашего нового метода, чтобы избежать каких-либо проблем с вашим табличным представлением.

...