我正在创建一个有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)
删除选择器()
