2015-11-20 6 views
0

Я добавляю форму входа в систему под UIAlertController, чтобы получить некоторые XML-данные с веб-страницы. Мне нужно ввести имя пользователя, пароль и дату. Для этого я добавляю 3 текстовых поля к экземпляру UIAlertController, используя метод .addTextFieldWithConfigurationHandler. В одном из них я изменяю представление ввода как UIDatePicker. Дело в том, что мне нужно добавить UIToolBar с элементом UIBarButton, чтобы сделать кнопку «Готово», чтобы завершить ввод. Все сделано хорошо, за исключением того, что я не могу получить доступ к функции showSelectedDate() (функция никогда не вызывается), чтобы отклонить inputView и установить свойство UITextField.text с датой. Кнопка есть, но она не используется.Swift: как добавить пользовательский вид ввода в UIAlertController?

Вот мой код.

loginDeCompraMercadoWebAlertController.addTextFieldWithConfigurationHandler { (textField) -> Void in 
     //Declare my inputView, DatePicker and UIToolBar 
     let toolBar = UIToolbar(frame: CGRectMake(0, 0, textField.frame.size.width, textField.frame.size.height)) 
     let datePicker = UIDatePicker() 
     let formatter = NSDateFormatter() 
     let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "showSelectedDate") 
     let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
     toolBar.setItems([doneButton, space], animated: true) 

     //Setup inputView and placeholders 
     textField.placeholder = "Fecha de Compra" 
     textField.inputView = datePicker 
     textField.inputAccessoryView = toolBar 
     textField.text = formatter.stringFromDate(datePicker.date) 
    } 

Большое спасибо, и если у вас есть предложения, сообщите мне об этом.

Я новичок (а не полный рабочий день), и если есть какой-либо способ, я могу быть полезным кому-то, пожалуйста, дайте мне знать.

ответ

4

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

Вот отличный tutorial by NSHipster, который переводит контрольные контроллеры.

+0

Спасибо, я прочитал тот же учебник по NSHipster. Так я могу это сделать? Добавив наблюдателя в UIBarButtonItem? Все мои подсказки исчезли. Я также пытался добавить UIBarButtonItem в качестве переменной класса, и это было бесполезно. –

+0

Я также добавил их в действие Alert Action, и теперь я не могу отобразить NSDatePicker. –

+1

Я не знаю достаточно о вашей конкретной ситуации, чтобы точно сказать, какое наилучшее решение будет, но я бы рассмотрел использование модального контроллера представлений вместо контрольного контроллера. Это позволит вам добавлять на экран больше элементов и использовать подборщик даты, как вы хотите. –

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