我使用 UIPickerView
为标签选择数据:
class BookingOptionsViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var lblProfile: UILabel!
var data = ["1", "2", "3"]
var picker = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
picker.dataSource = self
let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureReconizer:)))
lblProfile.addGestureRecognizer(tap)
lblProfile.isUserInteractionEnabled = true
}
func tap(gestureReconizer: UITapGestureRecognizer) {
print("*")
picker.isHidden = false
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
lblProfile.text = data[row]
self.view.endEditing(true)
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
}
当我点击标签时,我想显示我的 UIPickerView
,但是 picker.isHidden = false
不起作用。
我应该怎么做才能显示 UIPickerView
?
最佳答案
您永远无法完成选择器 View 的设置。你创造它。您设置它的委托(delegate)和数据源,仅此而已。你需要设置它的框架。并且您需要将它添加到 View Controller 的 View (或其他一些适当的父 View )。
override func viewDidLoad() {
super.viewDidLoad()
var pickerRect = picker.frame
pickerRect.origin.x = // some desired value
pickerRect.origin.y = // some desired value
picker.frame = pickerRect
picker.delegate = self
picker.dataSource = self
picker.isHidden = true
view.addSubview(picker)
let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureReconizer:)))
lblProfile.addGestureRecognizer(tap)
lblProfile.isUserInteractionEnabled = true
}
关于ios - 在标签点击时显示 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319153/