2012-03-08 60 views
29

更新UIAlertView現在有一個風格,它允許在UIAlertView我怎麼能初始化一個UIAlertView中的文本字段

alert.alertViewStyle = UIAlertViewStylePlainTextInput; 

這種運作良好,文本輸入框,但我想初始化一個defualt輸入文本像「樣本」這樣的文字。

我看到,在過去的人都喜歡使用未公開的API(這偉大工程)

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

但由於這是還沒有一個官方的蘋果公共API我不能使用它。

任何其他方式來處理?我嘗試在willPresentAlertView中初始化,但文本字段似乎是隻讀的。

感謝

回答

8

沒有測試,但我認爲這會工作:

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

UIALertView有一個textFieldAtIndex:方法,返回你想要的UITextField對象。

對於UIAlertViewStylePlainTextInput,文本字段的索引是0

然後,您可以設置佔位符(或文本)的文本框的屬性:

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

UIAlertView Class Reference

+0

大 - 謝謝你,工作 – timeview 2012-03-08 19:06:00

+1

不客氣:)如果回答了你的問題,你可以通過點擊旁邊的蜱接受答案到它 – Mutix 2012-03-08 20:07:21

+0

這似乎沒有工作了。 textFieldAtIndex產生這個錯誤:***終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:'textFieldIndex(0)在文本字段數組邊界之外'。 – Symmetric 2013-11-06 19:38:15

6

設置缺省uiAlertView中的值將會起作用。

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

完美答案:) – 2015-11-03 07:02:32