Swift 为什么我的pickerview没有';是否在某些文本字段上不显示?
我找到了向应用程序添加带字段的选择器视图的方法。我添加了三个字段:Swift 为什么我的pickerview没有';是否在某些文本字段上不显示?,swift,uitextfield,uipickerview,Swift,Uitextfield,Uipickerview,我找到了向应用程序添加带字段的选择器视图的方法。我添加了三个字段: @IBOutlet weak var position: UITextField! @IBOutlet weak var emplFilter: UITextField! @IBOutlet weak var locFilter: UITextField! 以及表示当前文本字段和选择器的变量: var currentTextField = UITextField() var currentPicker = UIPickerVi
@IBOutlet weak var position: UITextField!
@IBOutlet weak var emplFilter: UITextField!
@IBOutlet weak var locFilter: UITextField!
以及表示当前文本字段和选择器的变量:
var currentTextField = UITextField()
var currentPicker = UIPickerView()
还添加了以下实现:
UITableViewDelegate, UITableViewDataSource,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource
添加了所有方法:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if currentTextField == locFilter{
return location.count
}else if currentTextField == test{
return proffestion.count
}else if currentTextField == emplFilter{
return employer.count
}else{
return 0
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if currentTextField == locFilter{
return location[row].name
}else if currentTextField == test{
return proffestion[row].name
}else if currentTextField == emplFilter{
return employer[row].name
}else{
return ""
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if currentTextField == locFilter{
locFilter.text = location[row].name
filters!["location"] = location[row].id
self.view.endEditing(true)
}else if currentTextField == test{
filters!["prof"] = proffestion[row].id
test.text = proffestion[row].name
self.view.endEditing(true)
}else if currentTextField == emplFilter{
emplFilter.text = employer[row].name
filters!["employer"] = "\(String(describing: employer[row].id))"
self.view.endEditing(true)
}
}
func textFieldDidBeginEditing(_ textField: UITextField) {
self.currentPicker.delegate = self
self.currentPicker.dataSource = self
print("click")
currentTextField = textField
if currentTextField == locFilter{
currentTextField.inputView = currentPicker
}else if currentTextField == test{
currentTextField.inputView = currentPicker
}else if currentTextField == emplFilter{
currentTextField.inputView = currentPicker
}
self.currentPicker.delegate = self
self.currentPicker.dataSource = self
}
这里我有一个问题——当我点击
position
字段时,我在日志中看不到任何输出。我不明白为什么会发生这种情况,我试图添加另一个字段,但没有改变情况。我尝试使用另一个数组,但也没有看到任何选择器视图。我试图在Internet上寻找任何可能的解决方案,但没有成功:(设置位置的代理
应该可以解决这个问题
position.delegate = self
我还想指出,每次文本字段开始编辑时,您不需要重复设置UIPickerView的delegate
和dataSource
。文本字段委托在哪里设置?在故事板上,如video@Frankenstein,非常感谢:)我没有为这个字段设置委托:)@Frankenstein,如果你愿意,你可以发布一个答案,我会申请的。我是iOS开发新手,这就是我犯这个错误的原因:(没关系。即使是有经验的开发人员也会犯这个错误。不客气。你可以将currentPicker.delegate=self
移动到viewDidLoad
。但在视频中,这个委托具有字段选择功能,这是错误的吗?