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

Posted

技术标签:

【中文标题】如何使用完成按钮确认我在 UIPickerView 中的选择?【英文标题】:How do I confirm my selection in UIPickerView with a done button? 【发布时间】:2020-03-23 17:13:58 【问题描述】:

我为这个问题道歉,其他问题要么已经过时,要么是关于在 UIPickerView 中嵌入按钮

我有一个显示 3 个字符串的 UIPickerView;一旦我的用户选择了他希望选择的字符串,我希望他点击一个完成按钮(该按钮未嵌入 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]
    

【问题讨论】:

【参考方案1】:
@objc func donePressed(_ sender: UIButton) 
        print("Done pressed")
        print(strings[pickerView!.selectedRow(inComponent: 0)])

【讨论】:

【参考方案2】:

首先在文档中寻找有用的东西。啊,这里是:

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

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

【讨论】:

以上是关于如何使用完成按钮确认我在 UIPickerView 中的选择?的主要内容,如果未能解决你的问题,请参考以下文章

如果我在选择器旋转时使用完成按钮关闭 UIPickerview 的操作表,则获取空值

在 UITableView 中隐藏 UIPickerview 完成按钮

如何使用完成按钮制作 UIPickerView?

如何以编程方式在按钮点击时隐藏 UIPickerview?

当我在明确选择一行之前选择 UIPickerView 上的“完成”按钮时,应用程序崩溃

使用 UIToolBar 上的完成按钮关闭 UIPickerView