如何在UIAlertView中初始化文本字段

时间:2012-03-08 14:36:39

标签: iphone ios ios5 uialertview

更新的UIAlertView现在有一种样式,允许UIAlertView中的文本输入字段,即

alert.alertViewStyle = UIAlertViewStylePlainTextInput;

这很好但我想用一个defualt文本初始化输入文本,例如" sample"。

我看到过去的人们使用过无证的api(效果很好)

[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];

但由于这仍然不是正式的Apple公共API,我无法使用它。

还有其他办法吗?我确实尝试在willPresentAlertView初始化,但文本字段似乎是只读的。

由于

5 个答案:

答案 0 :(得分:57)

UIALertView有一个textFieldAtIndex:方法,可以返回您想要的UITextField对象。

对于UIAlertViewStylePlainTextInput,文本字段的索引为0.

然后,您可以设置文本字段的占位符(或文本)属性:

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";

UIAlertView Class Reference

答案 1 :(得分:9)

简便方法

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

答案 2 :(得分:8)

未经测试,但我认为这样可行:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];

答案 3 :(得分:6)

要在uiAlertView中设置默认值,这件事就可以了。

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];

答案 4 :(得分:0)

- (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);
    }
}