1

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

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

这就是我在 Interface Builder 所做的:

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

连接插座和 PickerView。

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

ctl 将文本字段拖到 View Controller 上的黄色图标上,然后选择委托。

希望有人可以帮忙。

以下是我的代码:

导入 UIKit

类视图控制器: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)")
    }

}

4

1 回答 1

0

您忘记添加委托和数据源

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

     }
于 2020-03-12T13:10:00.653 回答