点击按钮时显示UIPickerView

Jay*_*Nai 2 uibutton uipickerview ios swift

在此处输入图片说明

我想单击此按钮打开一个UIPickerView。我已经创建了此按钮,现在当用户单击它时,我想打开一个UIPickerView。我在互联网上看过许多教程,但所有教程都显示为:

textfield.inputview = uipker // i don't want to use extfield
Run Code Online (Sandbox Code Playgroud)

但是要在没有文本字段的情况下实现它。有可能吗,请告诉我该怎么做。

Kul*_*eep 12

如果要从Interface Builder进行操作,则可以UIPickerView在StoryBoard中添加它,UIPickerView并先将其隐藏,然后在单击按钮时显示它。

如果您想通过编码来做到这一点,那么您可以尝试一下。

将其定义为全局。

var toolBar = UIToolbar()
var picker  = UIPickerView()
Run Code Online (Sandbox Code Playgroud)

在您的按钮点击动作中添加以下代码。我Done在工具栏中添加了按钮以关闭选择器。

注:我写的按钮操作整个代码,如果你不想做,只是写在所有代码viewDidLoad,并在您的按钮操作只写这些线self.view.addSubview(picker)self.view.addSubview(toolBar)

@IBAction func YOUR_BUTTON__TAP_ACTION(_ sender: UIButton) {
    picker = UIPickerView.init()
    picker.delegate = self
    picker.backgroundColor = UIColor.white
    picker.setValue(UIColor.black, forKey: "textColor")
    picker.autoresizingMask = .flexibleWidth
    picker.contentMode = .center
    picker.frame = CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(picker)

    toolBar = UIToolbar.init(frame: CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .blackTranslucent
    toolBar.items = [UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(onDoneButtonTapped))]
    self.view.addSubview(toolBar)
}
Run Code Online (Sandbox Code Playgroud)

在“完成”按钮上,您可以删除工具栏以及PickerView。

@objc func onDoneButtonTapped() {
    toolBar.removeFromSuperview()
    picker.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)

委托方法 UIPickerView

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

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

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

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    print(YOUR_DATA_ARRAY[row])
}
Run Code Online (Sandbox Code Playgroud)