Reputation: 291
The updated UIAlertView
now has a style which allows a Text input field in UIAlertView
i.e.
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
This works well but I wanted to init the input text with a defualt text like "sample".
I see that folks in the past have used undocumented api like (which works great)
[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];
but since this is still not an official Apple public API I can't use it.
Any other way to handle this? I did try to init in willPresentAlertView
but text field seem to be read-only.
Thanks
Upvotes: 29
Views: 18093
Reputation: 693
Easy way to do
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];
Upvotes: 9
Reputation: 45
- (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);
}
}
Upvotes: 0
Reputation: 311
For setting default value in uiAlertView this thing will work.
UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];
Upvotes: 6
Reputation: 4196
The UIALertView
has a textFieldAtIndex:
method that returns the UITextField
object you want.
For a UIAlertViewStylePlainTextInput
, the index of the textfield is 0.
You can then set the placeholder (or text) property of the textfield:
UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";
Upvotes: 57
Reputation: 52565
Not tested, but I assume this would work:
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];
Upvotes: 8