2017-01-04 2 views
0

Многие люди на SO предлагают использовать uipickerview и uitextfield для создания выпадающего интерфейса. У меня есть pickerview, хранящийся в объекте. Как я могу добавить это в представление viewcontroller, когда текстовое поле прослушивается?Добавить uipickerview, сохраненный в объекте для просмотра viewcontroller

ответ

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 
    } 
} 
Смежные вопросы