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