2012-01-29 3 views
0

В методе viewDidload я использую MBProgressHUD, чтобы показать индикатор активности, пока данные не будут загружены из сети, а затем, чтобы проверить, включено ли приложение GPS. на основании этого я предупреждаю пользователя, используя MBProgressHUD.Сообщения об отображении MBProgressHUD один над другим

Мой код;

ViewDidLoad

hudForDownloadData = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
[self.navigationController.view hudForDownloadData ]; 
hudForDownloadData .delegate = self; 
hudForDownloadData .labelText = @"Loading"; 
hudForDownloadData .detailsLabelText = @"updating data"; 
[hudForDownloadData showWhileExecuting:@selector(downloadDataFromWebService) onTarget:self withObject:nil animated:YES]; 

[self downloadDataFromWebService]; // This method is called, and then data is downloaded from the webservice, once the data is downloaded i will remove the `MBProgressHUD ` alert 

Теперь я проверить, если приложение открывает доступ к GPS, и предупреждает пользователя, если нет.

hudForGPS = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
    [self.navigationController.view addSubview:HUD]; 
    hudForGPS .delegate = self; 
    hudForGPS .labelText = @"Loading"; 
    hudForGPS .detailsLabelText = @"updating data"; 
    [hudForGPS showWhileExecuting:@selector(checkIfApplicationEnabledGPS) 
onTarget:self withObject:nil animated:YES]; // This will only take a 
maximum of 2-3 seconds. and i will remove it after that 

Проблема в том, что; когда интернет/wifi не работает, hudForDownloadData будет постоянно анимировать (отображать идентификатор активности). Тем временем также будет выполняться hudForGPS. Но он будет отображаться ниже hudForDownloadData. Таким образом, пользователь не сможет его увидеть.

Что я хочу сделать, это выполнить команду checkIfApplicationEnabledGPS первым, и ждать, пока его предупреждения заканчивается (это займет всего 2-3 секунды), а затем загрузить выполните downloadDataFromWebService, где, если Интернет/WiFi не доступна она будет показывать навсегда.

Как я могу сделать это программно?

ответ

0

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

- (Недействительными) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex

, когда пользователь нажимает кнопку ОК в UiAlert просмотра вы можете переопределить выше делегата с hudForDownloadData

Таким образом, оба checkIfApplicationEnabledGPS и hudForDownloadData будут выполняться один за другим

+0

Мне нужно использовать индивидуальные предупреждения в обоих экземплярах (MBProgressHUD) – Illep

+0

В этом случае также не было бы проблем, вы могли бы создать собственное оповещение и могли бы обрабатывать свои собственные кнопки IBactions. –

+0

hudWasHidden. Используете ли вы этот делегат MBProgressHUD, когда checkIfApplicationEnabledGPS закончен ? –