2016-07-06 49 views
0

我试图让用户选择一个日期并让它显示在文本字段中。我在网上发现了很多答案,但他们似乎都没有工作。如果他们过时了,我不会。我在选择器部分发现“datePickerView.addTarget”错误。当我运行应用程序时,我点击文本字段,出现我想要的键盘。但是,只要我更改日期,应用程序就会崩溃。在TextField中输入DatePicker问题

任何帮助将非常感谢!

@IBAction func dateFieldEditing(sender: UITextField) { 

    let datePickerView:UIDatePicker = UIDatePicker() 

    datePickerView.datePickerMode = UIDatePickerMode.Date 

    sender.inputView = datePickerView 

    datePickerView.addTarget(self, action:Selector("handleDatePicker"),forControlEvents: UIControlEvents.ValueChanged) 

} 


func handleDatePicker (sender: UIDatePicker){ 

    let formatter = NSDateFormatter() 
    formatter.dateStyle = .LongStyle 
    dateField.text = formatter.stringFromDate(sender.date) 
} 
+0

你的语法有点过时了。你的代码基本没问题,但它应该是'datePickerView.addTarget(self,action:#selector(self.handleDatePicker),forControlEvents:UIControlEvents.ValueChanged)''#selector(...。)'不知道为什么编译器不会抱怨。 – beyowulf

+0

@beyowulf完美!有效。非常感谢。 –

回答

0

以下工作假设您通过Interface Builder将UITextField和UIDatePicker绑定为IBOutlets。设置sender.inputView是不必要的。

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var datePicker: UIDatePicker? 
    @IBOutlet weak var textField: UITextField? 

    func handleDatePicker (sender: UIDatePicker) { 
     let formatter = NSDateFormatter() 
     formatter.dateStyle = .LongStyle 
     textField!.text = formatter.stringFromDate(sender.date) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.datePicker!.datePickerMode = UIDatePickerMode.Date 
     datePicker!.addTarget(self, action:#selector(handleDatePicker(_:)), forControlEvents: UIControlEvents.ValueChanged) 
    } 
}