web-dev-qa-db-ja.com

UIAlertViewのテキストフィールドを初期化する方法

更新されたUIAlertViewに、UIAlertViewのテキスト入力フィールドを許可するスタイルが追加されました。

alert.alertViewStyle = UIAlertViewStylePlainTextInput;

これはうまく機能しますが、「sample」のようなデフォルトのテキストで入力テキストを初期化したいと思いました。

私は過去の人々が文書化されていないapiのようなものを使用していることを確認します(これはうまく機能します)

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

しかし、これはまだ公式のAppleパブリックAPIではないため、使用できません。

これを処理する他の方法は? willPresentAlertViewで初期化を試みましたが、テキストフィールドは読み取り専用のようです。

ありがとう

29
timeview

UIALertViewにはtextFieldAtIndex:必要なUITextFieldオブジェクトを返すメソッド。

UIAlertViewStylePlainTextInputの場合、テキストフィールドのインデックスは0です。

次に、テキストフィールドのプレースホルダー(またはテキスト)プロパティを設定できます。

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

IAlertViewクラスリファレンス

57
Mutix

簡単な方法

 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];
9
Dipu Rajak

テストされていませんが、これはうまくいくと思います:

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

UiAlertViewでデフォルト値を設定する場合、これは機能します。

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];
6
Salman Iftikhar
- (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);
    }
}
0
user948749