Просмотр отображения в верхней части значка загрузки из-за асинхронного вызова

Я делал все в одном потоке и только начал переходить на асинхронные вызовы, поэтому я немного запутался.

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

Теперь у меня есть все, кроме того, что HUD отображается под пустой таблицей. Вот самый актуальный код.

- (void)awakeFromNib
{
    [super awakeFromNib];
    [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        self.dataController = [[StudyController alloc] initWithCredentials:email password:password];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:self.tableView animated:YES];
            [self.tableView reloadData];
        });
    });
}

По сути, я думаю, что весь мой код, который правильно отображал таблицу, выполняется один раз во время выполнения асинхронного вызова и показывает пустую таблицу поверх HUD, а затем снова после вызова, когда я сообщаю ему reloadData., Как заставить его не запускаться в первый раз?

Благодарю.

1 ответ

Решение

Трудно оценить, не видя методы делегата / источника данных в табличном представлении, но ваша интуиция имеет смысл. В этом случае я вижу два варианта:

  1. Добавьте некоторую логику в методы делегата / источника данных, чтобы правильно отображать представление загрузки, если таблица пуста.
  2. Вместо того, чтобы добавлять представление загрузки к представлению таблицы, добавьте представление загрузки к суперпредставлению представления таблицы. Таким образом, вы можете убедиться, что представление загрузки всегда находится над представлением таблицы.

Я обычно выбираю второй метод, потому что я предпочитаю сосредоточить свои источники данных и делегировать методы только на табличном представлении.

Надеюсь это поможет!

Другие вопросы по тегам