Многие люди на SO предлагают использовать uipickerview и uitextfield для создания выпадающего интерфейса. У меня есть pickerview, хранящийся в объекте. Как я могу добавить это в представление viewcontroller, когда текстовое поле прослушивается?Добавить uipickerview, сохраненный в объекте для просмотра viewcontroller
0
A
ответ
0
Вместо хранения pickerview сохраните только источник данных в раскрывающемся списке. Сделайте ViewController делегатом выпадающего класса. Когда текстовое поле начинается редактирование, вызовите метод делегата, чтобы установить источник данных о pickerview ViewController в раскрывающемся меню
протокол Dropdown Делегат:
protocol DropdownDelegate : class {
func activateDropdown(dropdown: Dropdown)
}
Выпадающий класс:
class Dropdown: UITextField, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
var dataSouce : String = []
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self {
if(dropdownDelegate != nil) {
dropdownDelegate?.activateDropdown(dropdown: self)
textField.endEditing(true)
}
}
}
//rest of delegate methods
}
ViewController класса
class ViewController: UIViewController, DropdownDelegate {
@IBOutlet weak var pickerView: UIPickerView!
func activateDropdown(dropdown: Dropdown) {
self.pickerView.delegate = dropdown
self.pickerView.dataSource = dropdown
}
func deactivateDropdown() {
changeDropdownStatus(status: true)
self.pickerView.isHidden = true
}
}