У меня есть MBProgressHUD, который показывает, когда данные асинхронно извлекаются в фоновом режиме. Иногда, когда сеть работает медленно, это может занять вечность. Так что на данный момент я просто скрываю его через 30 секунд, если он не был отклонен. Как можно отключить этот HUD из-за медленного сетевого подключения?
Увольнение MBProgressHUD
Ответы (2)
Я бы сказал, что лучшим решением, вероятно, будет держать HUD включенным все время загрузки данных, чтобы пользователь знал, что что-то происходит, и, возможно, дать ему возможность отменить это, если это подходит для вашего приложения. В качестве альтернативы, если вы можете загружать и отображать данные по частям (т. е. до того, как у вас будет весь набор данных), вам следует просто отображать HUD до тех пор, пока у вас не будет достаточно данных, чтобы вы могли начать отображать что-то в пользовательском интерфейсе, что пользователь может взаимодействовать с.
По сути, вы хотите избежать ситуации, когда пользователю может показаться, что ничего не происходит, а пользовательский интерфейс по существу пуст, и ему нечего делать.
Реализовать делегат MBProgressHUD
он будет вызываться каждый раз, будь то быстрое или медленное сетевое соединение. В случае медленного сетевого соединения будет тайм-аут, и этот делегат будет уволен, удалите hud из супервизора в этом делегате.
-(void)hudWasHidden
{
[HUD removeFromSuperview];
}