选择器视图 - 文本字段未更新

Posted

技术标签:

【中文标题】选择器视图 - 文本字段未更新【英文标题】:Picker View - Textfield not updating 【发布时间】:2020-02-20 10:12:21 【问题描述】:

我正在尝试制作一个下拉列表并尝试使用 PickerView。但是在选择器视图中选择项目后,我找不到更新文本字段的方法。

我怀疑 pickerView 函数的“didSelectRow”根本没有被调用,虽然我不知道如何检查它。 (我试图打印选定的行,但没有任何反应)。

这就是我在 Interface Builder 中所做的:

创建一个文本字段。 将 Picker View 从 Library 拖到界面中。

连接插座和 PickerView。

ctl 将 PickerView 拖到 View Controller 的黄色图标上,然后选择委托和数据源。

ctl 将文本字段拖到视图控制器的黄色图标上,然后选择委托。

希望有人能提供帮助。

以下是我的代码:

导入 UIKit

类 ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource

@IBOutlet weak var pickerBox: UIPickerView!
@IBOutlet weak var textBox: UITextField!

var list = ["Item 1", "Item 2", "Item 3"]

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    

func numberOfComponents(in pickerView: UIPickerView) -> Int
           return 1
       

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
           return list.count
       

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
     var listingTypesArray = Array(list)
     return listingTypesArray[row]
        

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, forComponent component: Int) 
    self.textBox.text = list[row]
    print("Row: \(row)")
    

【问题讨论】:

【参考方案1】:

您忘记添加委托和数据源

    override func viewDidLoad()
     
        super.viewDidLoad()
     // Do any additional setup after loading the view.
        self. pickerBox.delegate = self
        self. pickerBox.dataSource = self

     

【讨论】:

以上是关于选择器视图 - 文本字段未更新的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的选择器视图没有出现在某些文本字段上?

如何设置选择器视图以显示来自多个矩阵选项的数据?

标签未随选择器视图更新

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图

将值从选择器视图设置为文本字段,而无需以编程方式全局快速声明 uitextfield

onAppear 不允许保存/更新选择器值的更改?