更新されたUIAlertView
に、UIAlertView
のテキスト入力フィールドを許可するスタイルが追加されました。
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
これはうまく機能しますが、「sample」のようなデフォルトのテキストで入力テキストを初期化したいと思いました。
私は過去の人々が文書化されていないapiのようなものを使用していることを確認します(これはうまく機能します)
[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];
しかし、これはまだ公式のAppleパブリックAPIではないため、使用できません。
これを処理する他の方法は? willPresentAlertView
で初期化を試みましたが、テキストフィールドは読み取り専用のようです。
ありがとう
UIALertView
にはtextFieldAtIndex:
必要なUITextField
オブジェクトを返すメソッド。
UIAlertViewStylePlainTextInput
の場合、テキストフィールドのインデックスは0です。
次に、テキストフィールドのプレースホルダー(またはテキスト)プロパティを設定できます。
UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";
簡単な方法
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];
テストされていませんが、これはうまくいくと思います:
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];
UiAlertViewでデフォルト値を設定する場合、これは機能します。
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);
}
}