Der aktualisierte UIAlertView
hat jetzt einen Stil, der ein Texteingabefeld in UIAlertView
erlaubt, d. H.
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
Das funktioniert gut, aber ich wollte den Eingabetext mit einem defualtierten Text wie "sample" initiieren.
Ich sehe, dass die Leute in der Vergangenheit undokumentierte APIs verwendet haben (was großartig funktioniert)
[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];
da dies jedoch immer noch keine offizielle API von Apple ist, kann ich sie nicht verwenden.
Gibt es eine andere Möglichkeit, damit umzugehen? Ich habe versucht, in willPresentAlertView
zu initiieren, aber das Textfeld scheint schreibgeschützt zu sein.
Vielen Dank
Die Variable UIALertView
verfügt über eine Methode textFieldAtIndex:
, die das gewünschte Objekt UITextField
zurückgibt.
Für eine UIAlertViewStylePlainTextInput
ist der Index des Textfelds 0.
Sie können dann die Platzhalter- (oder Text-) Eigenschaft des Textfelds festlegen:
UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";
Einfacher Weg
UIAlertView *alerView = [[UIAlertView alloc] initWithTitle:@"your title" message:@"your message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
alerView.alertViewStyle = UIAlertViewStylePlainTextInput;
[[alerView textFieldAtIndex:0] setPlaceholder:@"placeholder text..."];
[alerView show];
Nicht getestet, aber ich gehe davon aus, dass dies funktionieren würde:
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];
Wenn Sie einen Standardwert in uiAlertView festlegen, funktioniert dieses Ding.
UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];
- (IBAction)showMessage:(id)sender {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Add New Category"
message:nil
delegate:self
cancelButtonTitle:@"Add"
otherButtonTitles:@"Cancel", nil];
[message setAlertViewStyle:UIAlertViewStylePlainTextInput];
[message show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"Add"])
{
UITextField *username = [alertView textFieldAtIndex:0];
NSLog(@"Category Name: %@", username.text);
}
}