当前位置 : 主页 > 手机开发 > ios >

ios – Swift:带有完成按钮的文本框上的弹出DatePicker

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在创建一个有UITextField的应用程序,当点击/点击时,它会显示一个从底部飞出的日期选择器.所述弹出面板具有完成按钮,该按钮将在点击/点击时将任何选择的日期(默认为今天)应用于文
我正在创建一个有UITextField的应用程序,当点击/点击时,它会显示一个从底部飞出的日期选择器.所述弹出面板具有完成按钮,该按钮将在点击/点击时将任何选择的日期(默认为今天)应用于文本字段,优选为YYYY-MM-DD格式.

我一直在网上挖掘,到目前为止,我已经看到了文本字段的IBAction示例,各种方式关于完成按钮的工作原理(大多数没有完成按钮),但我想知道我是否可以从我的代码中回收或基于下面的下拉菜单:

let wellheadPressTest : [String] = ["PSIG", "MPAG"]
var wellboreStatusPickerView = UIPickerView()

override func viewDidLoad() {
    let wellboreStatusToolBar = UIToolbar()
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    let doneButtonWellbore = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePickerWellbore")

    wellboreStatusToolBar.barStyle = UIBarStyle.Default
    wellboreStatusToolBar.translucent = true
    wellboreStatusToolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    wellboreStatusToolBar.sizeToFit()
    wellboreStatusToolBar.setItems([spaceButton,spaceButton,doneButtonWellbore], animated: false)
    wellboreStatusToolBar.userInteractionEnabled = true

    wellboreStatusPickerView.delegate = self
    self.samplingWaterFormOneView.textfieldWellbore.inputView = wellboreStatusPickerView
    self.samplingWaterFormOneView.textfieldWellbore.inputAccessoryView = wellboreStatusToolBar
}


// Various Required PickerView functions

func donePickerWellbore(){
    let row = wellboreStatusPickerView.selectedRowInComponent(0);
    pickerView(wellboreStatusPickerView, didSelectRow: row, inComponent:0)
    self.samplingWaterFormOneView.textfieldWellbore.resignFirstResponder()
}

这是我试过的:

var dateSampledPickerView = UIDatePicker()

override func viewDidLoad() {
    let dateSampledPickerToolBar = UIToolbar()
    let doneButtonDate = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePickerDate")
    dateSampledPickerToolBar.barStyle = UIBarStyle.Default
    dateSampledPickerToolBar.translucent = true
    dateSampledPickerToolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    dateSampledPickerToolBar.sizeToFit()
    dateSampledPickerToolBar.setItems([spaceButton,spaceButton,doneButtonDate], animated: false)
    dateSampledPickerToolBar.userInteractionEnabled = true

    dateSampledPickerView.datePickerMode = UIDatePickerMode.Date
    dateSampledPickerView.addTarget(self, action: Selector("datePickerValueChanged"), forControlEvents: UIControlEvents.ValueChanged)

    self.samplingWaterFormOneView.textfieldDateSampled.inputView = dateSampledPickerView
    self.samplingWaterFormOneView.textfieldDateSampled.inputAccessoryView = dateSampledPickerToolBar
    self.samplingWaterFormOneView.textfieldDateSampled.delegate = self
}

func datePickerValueChanged(sender:UIDatePicker) {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateStyle = "YYYY-MM-DD"
    dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
    self.samplingWaterFormOneView.textfieldDateSampled.text = dateFormatter.stringFromDate(sender.date)
}

func donePickerDate(){
    self.samplingWaterFormOneView.textfieldDateSampled.resignFirstResponder()
}

上面的代码确实显示了一个带有日期选择器的弹出菜单,当我在文本字段顶部时,带有完成按钮,但文本字段没有获取日期.

编辑:还尝试修改datePickerValueChanged,使其没有发件人,并使用dateSampledPickerView作为文本字段.没工作.

在函数中添加注释表明没有调用datePickerValueChanged函数.

我究竟做错了什么?

我相信datePickerValueChanged函数没有被调用,因为你还没有设置dateSampledPickerView的委托.

所以简单地输入

dateSampledPickerView.delegate = self

*********编辑****************

好吧,仔细观察后我相信你已经错误地设置了动作调用.替换此行

dateSampledPickerView.addTarget(self, action: Selector("datePickerValueChanged"), forControlEvents: UIControlEvents.ValueChanged)

dateSampledPickerView.addTarget(self, action: "datePickerValueChanged", forControlEvents: UIControlEvents.ValueChanged)

删除选择器()

网友评论