Frage

Ich habe das Problem habe, dass die UIAlertViewDelegate Methode - (void) alertViewCancel: (UIAlertView *) Alertview wird nicht aufgerufen, wenn ich ein Alertview mit stornieren ist Taste abbrechen

.

Schräge ist, dass die delegierte Methode - (void) Alertview:. (UIAlertView *) Alertview clickedButtonAtIndex: (NSInteger) buttonIndex funktioniert perfekt

Hat jemand eine Idee?

Vielen Dank im Voraus
Sean

- (void)alertViewCancel:(UIAlertView *)alertView
{   
    if(![self aBooleanMethod])
    {
        exit(0);
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    //some code
}   

ich das nennen, wenn eine Schaltfläche geklickt wird:

- (void)ImagePickDone
{
    UIAlertView *alertDone = [[UIAlertView alloc] 
                          initWithTitle:@"Done" 
                          message:@"Are u sure?"
                          delegate:self 
                          cancelButtonTitle:@"Cancel" 
                          otherButtonTitles: @"Yes", nil];
    [alertDone show];   
    [alertDone release];
}
War es hilfreich?

Lösung

Die alertViewCancel wird verwendet für, wenn das System für Ihre Warnung Ansicht entlässt, nicht, wenn der Benutzer die Schaltfläche „Abbrechen“. Zitat von Apfel docs :

  

Optional können Sie implementieren die   alertViewCancel: Methode nehmen die   geeignete Aktion, wenn das System   annulliert Ihre Warnung Ansicht. wenn die   Delegierter führt dies nicht implementieren   Verfahren ist das Standardverhalten   simulieren den Benutzer Sie auf den Button Abbrechen   Taste und Schließen der Ansicht.

Wenn Sie erfassen möchten, wenn der Benutzer die Schaltfläche „Abbrechen“ drückt sollten Sie die clickedButtonAtIndex Methode verwenden und überprüfen, ob die Index entspricht dem Index für die Taste. Um diesen Index Verwendung zu erhalten:

index = alertDone.cancelButtonIndex;

Andere Tipps

Sie können die auf dem Index 0 dieses Delegaten Abbrechen behandeln:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0){
      //cancel button clicked. Do something here.
    }
    else{
      //other button indexes clicked
    }
}   

Dies kann auf zwei Arten verbessert werden. Zuerst behandelt es nur den Fall, dass der Benutzer tatsächlich eine Schaltfläche geklickt hat. Es behandelt nicht die Situation, dass [myAlert dismissWithClickedButtonIndex:] genannt wird, oder dass der Alarm auf andere Weise entlassen. Zweitens Taste 0 ist nicht unbedingt die Abbruchtaste. In einer Warnung mit zwei Tasten, ist der linke bei Index 0 und das rechte ist am Index 1. Wenn Sie die Titel geändert, so dass die rechte Taste sagt „Abbrechen“, dann die Taste 1 logisch auf die Schaltfläche Abbrechen ist. Statt „willDismiss“ Sie können „didDismiss“ implementieren, die aufgerufen wird, nachdem der Dialog verschwunden ist und nicht vorher.

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == alertView.cancelButtonIndex)
    {
      //cancel button clicked. Do something here.
    }
    else
    {
      //other button indexes clicked
    }
}   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top