我正在创建一个有UITextField的应用程序,当点击/点击时,它会显示一个从底部飞出的日期选择器.所述弹出面板具有完成按钮,该按钮将在点击/点击时将任何选择的日期(默认为今天)应用于文
我一直在网上挖掘,到目前为止,我已经看到了文本字段的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)
删除选择器()