首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击“标签”显示UIPickerView

单击“标签”显示UIPickerView
EN

Stack Overflow用户
提问于 2017-02-18 18:37:54
回答 2查看 12.5K关注 0票数 1

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

代码语言:javascript
复制
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,但是UIPickerView不能工作。如何显示UIPickerView

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-18 18:52:20

您从未完成选择器视图的设置。你创造了它。您可以设置它的委托和数据源,但仅此而已。你需要设置它的框架。您需要将其添加到视图控制器的视图(或其他适当的父视图)中。

代码语言:javascript
复制
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
}
票数 4
EN

Stack Overflow用户

发布于 2019-02-16 20:09:33

您可以创建一个UILabel子类并返回canBecomeFirstResponder true。然后重写inputView以返回所需的pickerView。下面是讨论UILabel doesn't show inputView的一个主题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42319153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档