点击按钮时显示 UIPickerView
Posted
技术标签:
【中文标题】点击按钮时显示 UIPickerView【英文标题】:Show a UIPickerView when a button is tapped 【发布时间】:2018-12-14 06:01:25 【问题描述】:我想在单击此按钮时打开一个 UIPickerView。 我已经创建了这个按钮,现在当用户点击它时,我想打开一个 UIPickerView。我在网上看过很多教程,但都显示:
textfield.inputview = uipker // i don't want to use extfield
但想在没有文本字段的情况下实现它。 有可能吗,如果可能的话,请告诉我该怎么做。
【问题讨论】:
您可以创建选择器视图并将其作为子视图添加到主视图,如果您希望它在按钮单击时使用。但最首选的方法是使用文本字段而不是按钮。 【参考方案1】:如果您想从 Interface Builder 中执行此操作,则可以在 StoryBoard 中添加 UIPickerView
并最初隐藏该 UIPickerView
并在您点击按钮时显示它。
如果你想通过编码来做到这一点,那么你可以试试这个。
将此定义为全局。
var toolBar = UIToolbar()
var picker = UIPickerView()
在您的按钮点击操作中添加以下代码。我在工具栏中添加了Done
按钮来关闭选择器。
注意:如果您不想这样做,我会在按钮操作中编写整个代码,只需在 viewDidLoad
中编写所有代码并在您的按钮操作 self.view.addSubview(picker)
和 @ 中仅编写这些行987654327@
@IBAction func YOUR_BUTTON__TAP_ACTION(_ sender: UIButton)
picker = UIPickerView.init()
picker.delegate = self
picker.dataSource = 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)
在完成按钮上,您可以删除 toolBar 以及 PickerView。
@objc func onDoneButtonTapped()
toolBar.removeFromSuperview()
picker.removeFromSuperview()
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?
return YOUR_DATA_ARRAY[row]
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
print(YOUR_DATA_ARRAY[row])
【讨论】:
谢谢@Kuldeep .. 我只是将UIPickerViewDataSource
和picker.dataSource = self
添加到您的回复中。【参考方案2】:
只需隐藏/显示您的uipickerview
。将选取器添加为情节提要中主视图的子视图,但将其隐藏。单击该按钮时显示它。
添加带有完成按钮的工具栏以再次隐藏选择器。 Here's 一个链接
【讨论】:
这不会占用大量内存吗?以上是关于点击按钮时显示 UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章
当我在点击布局问题上设置:isEnabled:false 时,Nativescript 按钮在点击时显示文本背景颜色