将存储在object中的uipickerview添加到viewcontroller的视图中

时间:2017-01-04 23:30:00

标签: swift uiviewcontroller

很多人建议使用uipickerview和uitextfield来制作类似下拉式的界面。我有一个存储在对象中的pickerview。如何在点击文本字段时将其添加到viewcontroller的视图中?

1 个答案:

答案 0 :(得分:0)

不是存储选择器视图,而是仅在下拉类中存储数据源。使ViewController成为下拉类的委托。当文本字段开始编辑时,调用委托方法将pickerview的数据源设置为viewcontroller到下拉列表

Dropdown Delegate协议:

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
    }
}