为啥我的选择器视图没有出现在某些文本字段上?
Posted
技术标签:
【中文标题】为啥我的选择器视图没有出现在某些文本字段上?【英文标题】:Why my pickerview doesn't appear on certain text field?为什么我的选择器视图没有出现在某些文本字段上? 【发布时间】:2020-07-16 14:56:49 【问题描述】:我找到了this video,其中显示了将带有字段的选择器视图添加到应用程序的方法。我添加了三个字段:
@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
字段时,我在日志中看不到任何输出。我不明白为什么会这样,我尝试添加另一个字段,但并没有改变这种情况。我尝试使用另一个数组,但也没有看到任何选择器视图。我试图在互联网上寻找任何可能的解决方案,但我没有成功:(
【问题讨论】:
在哪里设置文本字段代表? 在视频中的情节提要 @Frankenstein,非常感谢你 :) 我没有为此字段设置代表 :) @Frankenstein,如果你愿意,你可以发布我将应用的答案。我是 ios 开发新手,这就是我犯此错误的原因:( 没关系。即使是经验丰富的开发人员也会犯这个错误。 【参考方案1】:设置delegate
的position
UITextField
应该可以解决问题。
position.delegate = self
我还想指出,您无需在每次开始编辑文本字段时重复设置 delegate
和 dataSource
或 UIPickerView
。
【讨论】:
不客气。您可以将currentPicker.delegate = self
移动到viewDidLoad
。
但是在视频中这个代表是在进行字段选择,是不是错了?以上是关于为啥我的选择器视图没有出现在某些文本字段上?的主要内容,如果未能解决你的问题,请参考以下文章