Увольнение MBProgressHUD

У меня есть MBProgressHUD, который показывает, когда данные асинхронно извлекаются в фоновом режиме. Иногда, когда сеть работает медленно, это может занять вечность. Так что на данный момент я просто скрываю его через 30 секунд, если он не был отклонен. Как можно отключить этот HUD из-за медленного сетевого подключения?


person xonegirlz    schedule 31.01.2012    source источник
comment
Вы спрашиваете, как закрыть HUD, или как закрыть его через 30 секунд, или найти альтернативное решение для закрытия через 30 секунд?   -  person UIAdam    schedule 31.01.2012
comment
альтернативное решение для отклонения его через 30 секунд. Причина в том, что я могу закрыть HUD через 30 секунд, однако что-то все еще загружается в фоновом режиме и еще не завершено.   -  person xonegirlz    schedule 31.01.2012


Ответы (2)


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

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

person UIAdam    schedule 31.01.2012
comment
Я согласен, вам, вероятно, следует придерживаться показа HUD, пока вы извлекаете данные. Использование -showWhileExecuting очень хорошо сработало для меня в этом отношении. Если вы перестанете его показывать, пользователь подумает, что это сделано, и попытается взаимодействовать, а это нехорошо, если данных нет. - person Bill Burgess; 01.02.2012
comment
да, это на самом деле проблема ... однако, как я могу дать возможность отменить, пока HUD вращается? Есть ли такой вариант? - person xonegirlz; 01.02.2012
comment
Это зависит не столько от HUD, сколько от того, как вы загружаете данные. Вам нужен какой-то способ отменить операцию загрузки фоновых данных. - person UIAdam; 01.02.2012

Реализовать делегат MBProgressHUD

он будет вызываться каждый раз, будь то быстрое или медленное сетевое соединение. В случае медленного сетевого соединения будет тайм-аут, и этот делегат будет уволен, удалите hud из супервизора в этом делегате.

-(void)hudWasHidden
{
    [HUD removeFromSuperview];

}
person Piyush Kashyap    schedule 31.01.2012