如何使用完成按钮确认我在 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 完成按钮