ios - 在标签点击时显示 UIPickerView

标签 ios swift uilabel uipickerview

我使用 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/

相关文章:

ios - 模拟 iPhone 应用程序中的选项卡

iOS - 在后台 iOS 8 和 Swift 中播放歌曲 15 分钟后

ios - 在 Storyboard 中自定义 TableView 节标题而不是以编程方式?

ios - 我可以直接在对象数据模型中创建 realm.writes 吗?

ios - 自动换行换行符在 UI​​Label 中不起作用,仅适用于特定文本字符串

ios - 覆盖 UILabel 的布局以添加带有手势处理的 subview

ios - 覆盖 func 准备(对于 segue : UIStoryboardSegue, 发件人 : Any?)不工作

swift - 在 Swift 中采用类型名称的通用函数

ios - Swift - 在 UIScrollView 中设置背景图像的问题

ios - 替换 UIlabel 代替 UIImageView 而不删除 interfacebuilder 中的约束