如何使用完成按钮确认我在 UIPickerView 中的选择?

How do I confirm my selection in UIPickerView with a done button?

对于这个问题,我深表歉意,其他问题要么已经过时,要么与在 UIPickerView 中嵌入按钮有关

我有一个显示 3 个字符串的 UIPickerView;一旦我的用户 select 编辑了他希望 select 的字符串,我希望他点击完成按钮(它没有嵌入 UIPickerView 本身;而是单独出现)。

let strings = ["1", "2", "3"]

fileprivate let pickerView: UIPickerView = {
       let pv = UIPickerView()
        pv.translatesAutoresizingMaskIntoConstraints = false
        return pv
    }()

override func viewDidLoad() {
pickerView.delegate = self
pickerView.dataSource = self

}

    let button: UIButton = {
        let btn = UIButton()
        btn.translatesAutoresizingMaskIntoConstraints = false
        btn.setTitle("Done", for: .normal)
        btn.addTarget(self, action: #selector(donePressed), for: .touchUpInside)
        return btn
    }()
    @objc func donePressed(_ sender: UIButton) {
        print("Done pressed")
        //Pressing this should print whichever row is currently selected
    }

extension ViewController: UIPickerViewDataSource {

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

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



}

extension ViewController: UIPickerViewDelegate {


    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        strings[row]
    }

首先在文档中查找有用的内容。啊,这里是:

https://developer.apple.com/documentation/uikit/uipickerview/1614369-selectedrow

所以。让您的按钮调用选择器视图的 selectedRow(inComponent:)。只有一个组件,因此您将通过 0。 return 值是 index(所选行)。如果您想知道实际的 (字符串),请将其用作 strings 的索引。

@objc func donePressed(_ sender: UIButton) {
        print("Done pressed")
        print(strings[pickerView!.selectedRow(inComponent: 0)])
}