MBProgressHUD и SDWebImage - HUD не отображается

Я использую SDWebImagePrefetcher для предварительной загрузки списка изображений из моего список.

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

Проблема в том, что HUD никак не отображается. Кроме того, SDWebImagePrefetcher — это NSObject, и я действительно не знаю, где инициализировать свой собственный UIViewController и HUD, поскольку у него нет методов viewDidLoad или viewWillAppear.

Я пытался сделать что-то вроде

MyCustomViewController *cv = [[MyCustomViewController alloc]init];
HUD = [[MBProgressHUD alloc]initInView:cv.view];

и не работал.

Я также попытался добавить UIAlertView в качестве подвида viewController, чтобы проверить, работает ли он, но он вообще не работал!

Любые советы о том, где инициализировать UIViewController в классе NSObject, чтобы показать HUD на выделенном контроллере, были бы потрясающими.


person Phillip    schedule 27.09.2012    source источник
comment
Вы убедились, что ваш cv не равен нулю?? Кроме того, после того, как вы создадите этот контроллер представления, как вы его представите?   -  person jere    schedule 29.09.2012
comment
Это не ноль, и мне не нужно его представлять, потому что этот класс является одноэлементным, и мне нужно делать то, что описано здесь stackoverflow.com/questions/12439536/ (последний комментарий Stig Brautaset)   -  person Phillip    schedule 30.09.2012
comment
Комментарий Стига не имеет ничего общего с тем, о чем вы здесь спрашиваете... он говорит о том, как вы должны обновлять прогресс для своего HUD. вы говорите, что не видите, что вы добавляете в свой контроллер представления... что именно вы хотите сделать?   -  person jere    schedule 30.09.2012
comment
И действительно. Я хочу обновить его прогресс, HUD даже не появляется, но я вроде понял, что механизм должен работать. Я просто хочу показать HUD в классе A, где класс A выделен в классе B (синглтон)   -  person Phillip    schedule 30.09.2012


Ответы (1)


Если вы хотите отобразить MBProgressHUD из любого класса, это просто. Просто добавьте его в keyWindow вашего приложения. Это окно самого верхнего уровня для вашего приложения, и к нему легко получить доступ из любого места.

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:keyWindow animated:YES];
hud.labelText = @"Loading";

И когда вы хотите скрыть MBProgressHUD, просто используйте

[hud hide:YES];

Убедитесь, что вы ждете доступа к keyWindow, пока не будет настроено главное окно вашего приложения. Это происходит при запуске. Если он настроен программно, он находится в вашем AppDelegate, вызывая [window makeKeyAndVisible].

person brynbodayle    schedule 30.09.2012
comment
Вот оно! Большое спасибо! -баунти через 10 часов - person Phillip; 30.09.2012