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)
| 归档时间: |
|
| 查看次数: |
6350 次 |
| 最近记录: |