【问题标题】:show uidatepicker, when I tap on view [duplicate]当我点击视图时显示 uidatepicker [重复]
【发布时间】:2017-08-24 04:56:45
【问题描述】:

我对 UITapGestureRecognizer 有一个看法

我想在点击视图时显示 uidatepicker

我该怎么做?

提前致谢

【问题讨论】:

标签: ios iphone swift swift3 datepicker


【解决方案1】:

我不确定你到底想要什么,但如果你只是有这样的东西呢?

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var datePicker: UIDatePicker!

    @IBAction func viewTapped(sender: Any) { // link gesture recogniser here
        datePicker.isHidden = false
    }

    override func viewDidLoad() {
        datePicker.isHidden = true // or set hidden checkbox to true in the picker's attributes inspector
    }
}

【讨论】:

    【解决方案2】:

    只需在触摸操作中声明您的选择器数据源。

    // in viewDidload method
    let gesture = UITapGestureRecognizer(target: self, action:  #selector (self.touchAction (_:)))
    self.view.addGestureRecognizer(gesture) // could be your custom view also
    
    //  for Swift 3
    func touchAction(_ sender:UITapGestureRecognizer){  
        // datasource
        self.pickerData = ["data1","data2" .. ect]
    
        if pickerData != nil{
            self.picker.delegate = self
            self.picker.dataSource = self
        } 
    }
    

    注意:您的控制器类应确认 UIPickerViewDelegate, UIPickerViewDataSource 以使用选择器委托。

    【讨论】:

    • 你看到了吗你的选择器名称不同#selector (self.touchAction (_:)和动作名称不同func someAction(_ sender:UITapGestureRecognizer){
    • @Anbu.Karthik,请看更新。
    • 还有一件事,你可以在 viewdidload 中分配数据源和委托,也可以在手势内部,只有你可以刷新选择器
    • @Anbu.Karthik,查看更新的ans,这可以防止picker的数据源为nil时意外崩溃,如果我们确认viewdidload中的代表,那么数据源不能为nil并且代表调用每次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2012-02-16
    • 2021-02-12
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多