2013-04-26 4 views
0

Я использую представление таблицы и пытаюсь показать MBProgressHud для выбора ячейки, которая занимает много времени, чтобы представить модальный (2,5 секунды).MBProgressHud не отображается, когда отображается индикатор активности сети.

Вот как я начинаю MBProgressHud:

- (void)showProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES]; 
    }); 
} 

- (void)hideProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD hideHUDForView:self.streamTableView animated:YES]; 
    }); 
} 

Я заметил, что прогресс HUD показывает только тогда, когда индикатор сетевой активности не вращается.

Сеть активируется, когда таблица перезагружается (с использованием Restkit 0.20.0). У меня AFNetworking настроен на запуск индикатора активности, когда есть открытое соединение.

Я проверил, что если отключить индикатор активности проблема не уйти:

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:NO]; 

Я бы очень хотел, чтобы иметь возможность сохранить возможность включена в любом случае. Какие-либо предложения?

ответ

0

Похоже, что индикатор сетевой активности связывает цикл запуска, который использует MBProgressHud.

Я закончил использовать метод this, чтобы время MBProgressHud отображалось до того, как индикатор снова соединит петлю.

- (void)showProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES]; 
     [[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]]; 
    }); 
} 
0

Казалось бы, вы используете свой сетевой код в основном потоке и блокируете любые обновления пользовательского интерфейса до его завершения. Проверьте, как вы начинаете сетевое соединение после выбора/перезагрузки ячеек и убедитесь, что оно помещено в очередь на фоновый поток. Индикатор активности полностью отделен от вашего кода приложения (действительно, он работает в другом потоке, и поэтому он работает и не затрагивается и не влияет на пользовательский интерфейс приложения).

Смежные вопросы