Закройте UIAlertView и замените другим - PullRequest
0 голосов
/ 09 июля 2010

Я запускаю приложение, которое требует, чтобы LocationServices был включен. Я проверяю, если они делают, позвонив в службу и поймать ошибку. В случае ошибки, я хочу, чтобы всплывающее окно с предупреждением уведомляло пользователя об активации служб определения местоположения. У меня есть еще один AlertView, открытый, когда этот тест происходит. Я хочу закрыть это и дать пользователю диалоговое окно, которое я упоминал ранее.

В настоящее время у меня есть

case kCLErrorDenied: // CL access has been denied (eg, user declined location use)

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"NOTICE" 
               message:@"Sorry, this application needs your location.  Please select 'Allow' when asked to use your current location.  You don't need to be on or near the trail."
                 delegate:self
              cancelButtonTitle:nil 
              otherButtonTitles:@"EXIT"];
   [alert show];
   [alert release];
   //exit(0);
   break;

Это заставляет приложение просто выйти. У меня там был вывод NSLog, так что я знаю, что он доходит до этого случая.

Ответы [ 2 ]

1 голос
/ 09 июля 2010

здесь вы указываете делегат: self, затем он ищет обработчики оповещений, объявленные в UIAlertViewDelegate, и когда он не находит, он вылетает.

Итак, вы должны определить

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

в вашем классе.

Также вы можете реализовать другие методы UIAlertViewDelegate, которые помогут вам в вашей задаче.

0 голосов
/ 09 июля 2010

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

...