2015-03-28 3 views
2
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Add new work order (TEST)" message:@"Please fill out all fields" delegate:self cancelButtonTitle:@"Add" otherButtonTitles: nil]; 
alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
UITextField *alertTextFieldName = [alert textFieldAtIndex:0]; 
alertTextFieldName.placeholder = @"Work order name"; 
alertTextFieldName.keyboardType = UIKeyboardTypeDefault; 
UITextField *alertTextFieldProjectNo = [alert textFieldAtIndex:1]; 
alertTextFieldProjectNo.placeholder = @"ProjectNo"; 
alertTextFieldProjectNo.keyboardType = UIKeyboardTypeDefault; 
UITextField *alertTextFieldSubName = [alert textFieldAtIndex:2]; 
alertTextFieldSubName.placeholder = @"Sub account name"; 
alertTextFieldSubName.keyboardType = UIKeyboardTypeDefault; 
[alert show]; 

Im пытается сделать это, но я получаю сообщение об ошибке: NSRangeException», причина:" *** - [__ NSArrayM objectAtIndex]: индекс 1 вне границ [0 .. 0]UIAlertView с несколькими текстовыми вводами?

я не должен уметь добавлять несколько текстовых полей в aletView? the -textFieldAtIndex: дайте мне понять, что это возможно. Я ошибаюсь?

+0

Возможно, это [ссылка] (http://stackoverflow.com/questions/24281508/how-to-limit-character-input-in-uialertview-uitextfield/24281666#24281666) помогает вам –

+0

UIAlertView устарел в iOS 8. Лучше использовать UIAlertController. – itsji10dra

+0

Я не думаю, что можно использовать более 2 текстовых полей, используя UIAlertView, но из iOS8 вы можете использовать UIAlertViewController, который может принимать более 2 – Andrea

ответ

5

Используйте этот код Добавить Mulitple текстовое поле в UIAlertView

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 100)]; 

UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(10,0,252,25)]; 
textField1.borderStyle = UITextBorderStyleRoundedRect; 
textField1.placeholder = @"Username"; 
textField1.keyboardAppearance = UIKeyboardAppearanceAlert; 
textField1.delegate = self; 
[v addSubview:textField1]; 

UITextField *textField2 = [[UITextField alloc] initWithFrame:CGRectMake(10,30,252,25)]; 
textField2.placeholder = @"Password"; 
textField2.borderStyle = UITextBorderStyleRoundedRect; 
textField2.keyboardAppearance = UIKeyboardAppearanceAlert; 
textField2.delegate = self; 
[v addSubview:textField2]; 


UITextField *textField3 = [[UITextField alloc] initWithFrame:CGRectMake(10,60,252,25)]; 
textField3.placeholder = @"Address"; 
textField3.borderStyle = UITextBorderStyleRoundedRect; 
textField3.keyboardAppearance = UIKeyboardAppearanceAlert; 
textField3.delegate = self; 
[v addSubview:textField3]; 


UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"" delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil]; 
[av setValue:v forKey:@"accessoryView"]; 
[av show]; 

Я надеюсь, что этот код полезным для вас.

+0

Я не уверен, почему кто-то проголосовал за ваш ответ, не комментируя некоторые детали того, что было бы лучшим решением. Между тем, должен ли я создавать текстовые поля как свойства, если я хочу получить их значения из метода делегата uialertview clickedButtonAtIndex:? – DevilInDisguise

+0

да это возможно. вы хотите создать свою глобальную переменную 3 текстового поля, а затем вы сможете получить значение из текстового поля. –

+0

Как получить это действие? clickbutton по индексу, или dissmiss не работает. –

0

Я думаю, что это thread будет весьма полезным.
Если вам нужно всего два поля, то используйте UIAlertViewStyleLoginAndPasswordInput.
В противном случае обеспечьте свое собственное подчинение всем необходимым для вашей логики.

P.S. textFieldAtIndex метод может использоваться для получения уже существующих текстовых полей, но вы пытаетесь получить поля, которые еще не существуют.

+0

. Im не уверен, как textFieldAtIndex должен работать тогда, так как textFieldatIndex: 0 относится к текстовое поле предупреждения. Как я могу получить его по индексу: 1? похоже, это будет форма alert alert – DevilInDisguise

+0

@DevilInDisguise да, конечно, он должен возвращать текстовое поле из UIAlertView. Я не уверен, но я думаю, что текстовые поля, которые могут быть возвращены этим методом, создаются _UIAlertView сам_, но вы можете управлять этими полями с помощью _UIAlertViewStyle_. Как видно из перечисления стилей, вариантов не так много. Уже есть другой ответ, используя ключ _accessoryView_, я думаю, вы должны попробовать. Фактически, он равен добавлению собственного подзаголовка. – RavisMsk

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