2012-03-08 3 views
29

Обновленный UIAlertView теперь имеет стиль, который позволяет поле ввода текста в UIAlertView т.е.Как я могу инициализировать текстовое поле в UIAlertView

alert.alertViewStyle = UIAlertViewStylePlainTextInput; 

Это хорошо работает, но я хотел, чтобы инициализировать ввода текста с DEFUALT текст как «образец».

Я вижу, что люди в прошлом использовали недокументированные API, как (который прекрасно работает)

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

, но так как это до сих пор не является официальным публичным API Apple, я не могу его использовать.

Любой другой способ справиться с этим? Я попытался инициализировать в willPresentAlertView, но текстовое поле похоже на чтение.

Благодаря

ответ

8

Не тестировался, но я предполагаю, что это будет работать:

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

UIALertView имеет textFieldAtIndex: метод, который возвращает UITextField объект, который вы хотите.

Для UIAlertViewStylePlainTextInput, индекс TextField 0.

Вы можете установить заполнитель (или текст) свойство текстового поля:

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

UIAlertView Class Reference

+0

Великий - спасибо, что работал – timeview

+1

Вы радушны :) Если ответили на свой вопрос, вы можете принять ответ, нажав на галочкой к нему – Mutix

+0

Это, похоже, больше не работает. textFieldAtIndex генерирует эту ошибку: *** Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «textFieldIndex (0) находится за пределами границ текстовых полей». – Symmetric

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

Идеальный ответ :) –

Смежные вопросы