Frage

Ich habe mit dem folgenden Code eine Alarmansicht mit zwei Schaltflächen erstellt:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle: title 
message: msg delegate:nil cancelButtonTitle:@"Replay" otherButtonTitles:@"Highscore", nil];
[alertView show];

Ich möchte Code ausführen, wenn auf eine der Schaltflächen geklickt wird.Dazu habe ich der Datei „delegate.m“ die folgende Methode hinzugefügt:

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
 if (buttonIndex==0) //Run some code 
 else //Other code
 }

Aber diese Methode wird nicht aufgerufen, wenn ich eine der Tasten drücke!Kann mir jemand sagen warum?

Dank im Voraus,

Sagiftw

War es hilfreich?

Lösung

delegate:nil

Wie wird die Alarmansicht einen Delegierten verbinden, wenn Sie angegeben haben, dass es keine Delegierten geben wird? Ersetzen Sie diesen Teil durch

delegate:self

stattdessen.

Andere Tipps

Versuchen Sie, den Delegaten auf self statt auf nil zu setzen.

Ich habe Uialertviews angerufen entsend withclickedButtonIndex: Animated: Methode von der Uitextfield -Delegate -Methode, weil ich auch die Tastaturrückgabe -Taste verarbeiten wollte:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField.tag == 1001) {
        [textField resignFirstResponder];
        [_alert dismissWithClickedButtonIndex:1 animated:YES];
    }
    return YES;
}

Auf diese Weise Methode AlertView: ClickedButtonatIndex: Nie aufgerufen, auch wenn Sie den richtigen Delegierten einrichten. Stattdessen AlertView: diddismisswithbuttonIndex: wird angerufen. Implementieren Sie also stattdessen diese Methode:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    // your code here
}

Wenn Sie nur die Schaltflächen der Warnansicht verarbeiten möchten, klickte der erste Anruf auf, und dann diddismisswithbuttonIndex.

In .h uiactionssheetdelegate und in .m, während eine Warnansicht erstellt wird

Die richtige Antwort auf diese Frage ist delegate:nil. Aber für den Fall, dass der Delegierte bereits auf sich selbst eingestellt ist und die clickedButtonAtIndex Funktioniert immer noch nicht, überprüfen Sie, ob Sie einen anderen Ansichts -Controller knallen ([self.navigationController popViewControllerAnimated:YES];) nach der Anzeige der Warnansicht. Dies kann auch dazu führen clickedButtonAtIndex nicht gerufen werden. Das ist mir passiert.

Hoffe das hilft jemandem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top