timeview
timeview

Reputation: 291

How can I init a text field in a UIAlertView

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

Answers (5)

Dipu Rajak
Dipu Rajak

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

user948749
user948749

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

Salman Iftikhar
Salman Iftikhar

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

Mutix
Mutix

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";

UIAlertView Class Reference

Upvotes: 57

Stephen Darlington
Stephen Darlington

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

Related Questions