2014-05-18 19 views
7

Ich benötige eine Eingabeaufforderung in meiner app und ich habe versucht, dieseUIAlertView Eingabeaufforderung

// Create a new item 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"New item" message:@"Enter a name for the item" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil]; 
alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
[alert show]; 

Und dann es wie folgt Handhabung:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
// The user created a new item, add it 
if (buttonIndex == 1) { 
    // Get the input text 
    NSString *newItem = [[alertView textFieldAtIndex:0] text]; 
} 
} 

aber es sieht nicht wie die clickedButtonAtIndex wird gerufen, warum?

Mit freundlichen Grüßen, Erik

+0

warum das C# tag? – vikingosegundo

+0

oh, haha ​​- Entschuldigung. Ich bin so daran gewöhnt zu fragen, wenn ich für Windows Phone entwickle, also ist es nur eine alte Gewohnheit – Erik

+0

Ohh. Ist es wirklich notwendig, die ganze Zeit herunterzuschreiben? Jetzt kann ich keine Fragen stellen ... Ich frage, weil ich die Lösung selbst nicht gefunden habe – Erik

Antwort

7

Sie müssen den Delegierten setzen.

alert.delegate = self; //Or some other object other than self 

Oder wenn Sie initialisieren die Warnung:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"New item" 
               message:@"Enter a name for the item" 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Add", nil]; 
0

Methode nicht aufgerufen wird, weil Sie Delegat nicht gesetzt sind.
übergeben Sie sich selbst als Delegat, damit es den Verweis darauf erhält.

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"New item" message:@"Enter a name for the item" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil]; 
+0

Hatte eine Antwort zu wählen, so wählte ich die mit dem geringsten Ruf :) - Aber danke! – Erik