Определение того, какой UIAlertView был нажат - PullRequest
0 голосов
/ 16 декабря 2010

Мне нужно всплывающее уведомление, когда мое приложение загружено ... Я назвал его завершенным запуском .. после нажатия кнопки ОК нужно показать другое предупреждающее сообщение, которое я использую clickedButtonAtIndex ...

Теперь, когда я щелкнулОК, кнопка вызова снова и снова .. alertview ..

Мне нужно позвонить только один раз ... что делать?

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.

    // Add the tab bar controller's view to the window and display.
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
    viewControllersList = [[NSMutableArray alloc] init];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Alow this app to use your GPS location"
    delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
    [alert show];
    [alert release];

}

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


    if (buttonIndex==0) {
        NSLog(@"NO");
    }
    else    {

        NSLog(@"Yes");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Do you want's to receive Push messages."
        delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
        [alert show];
        [alert release];
    }

}

@ заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 16 декабря 2010

набор delegate:nil во втором оповещении
Я имею в виду

if (buttonIndex==0) { NSLog(@"NO"); } else {

NSLog(@"Yes");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Do you want's to receive Push messages."
delegate:nil cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];
}
3 голосов
/ 16 апреля 2012

Вы также можете добавить тег в AlertView и проверить его позже с помощью метода clickedButtonAtIndex

        UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"" message:@"All local datawill be erased. Erase local data?" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Erase", @"Cancel",nil];
        alert.tag =123; // added the tag so we can prevent other message boxes ok button to mix up 
        [alert show];

затем

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex ==0 && alertView.tag==123){
       // Do what ever you wish
    }
}
3 голосов
/ 16 декабря 2010

Определите каждый UIAlertView и в делегате найдите, на какое предупреждение нужно ответить:

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

    if(alert1) {
        if (buttonIndex==0) { 

            NSLog(@"NO"); 
        } else {

            NSLog(@"Yes");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Do you want's to receive Push messages." delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
            [alert show];
            [alert release];
        }
    } else {

        /*  the second alertview  using the same buttonIndex  */
    }

}
1 голос
/ 23 декабря 2010

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

- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:tabBarController.view];
// Create a location manager instance to determine if location services are enabled. This manager instance will be
// immediately released afterwards.
CLLocationManager *manager = [[CLLocationManager alloc] init];
if (manager.locationServicesEnabled == NO) {
    UIAlertView *servicesDisabledAlert = [[UIAlertView alloc] initWithTitle:@"Location Services Disabled" message:@"You currently have all location services for this device disabled. If you proceed, you will be asked to confirm whether location services should be reenabled." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [servicesDisabledAlert show];
    [servicesDisabledAlert release];
}
[manager release];                                  

}

http://developer.apple.com/library/ios/#samplecode/LocateMe/Listings/Classes_AppDelegate_m.html%23//apple_ref/doc/uid/DTS40007801-Classes_AppDelegate_m-DontLinkElementID_4

То же самое для push-уведомлений.

0 голосов
/ 07 апреля 2011

, хотя у вас уже есть много решений для реализации ... но я думаю, что лучше было бы назначить тег каждому из ваших AlertView, и перед обнаружением нажатой кнопки проверьте тег вызова AlertView. Надеюсь, это поможет. @Gerard: Хотя и диспетчер местоположений, и служба push-уведомлений создают сообщения, сгенерированные системой, пользователи могут их не проверять, чтобы они больше не отображались. Так что лучшим способом подачи жалоб HIG является генерирование приложений сообщениями, когда требуются диспетчер push или местоположения.

...