在标签单击时显示 UIPickerView [英] Show UIPickerView on label click

查看:23
本文介绍了在标签单击时显示 UIPickerView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 UIPickerView 为标签选择数据:

I use UIPickerView to select data for label:

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 ?

When I click on label I want to show my UIPickerView, but picker.isHidden = false does not work. What should I do to display UIPickerView ?

推荐答案

您永远不会完成选择器视图的设置.你创造它.您设置了它的委托和数据源,仅此而已.你需要设置它的框架.并且您需要将其添加到视图控制器的视图(或其他适当的父视图)中.

You never finish the setup of the picker view. You create it. You set its delegate and data source, but that's it. You need to set its frame. And you need to add it to the view controller's view (or some other appropriate parent 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
}

这篇关于在标签单击时显示 UIPickerView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆