在我的应用程序中,我有一个用于添加出生日期的文本框。我添加一个datePicker来弹出一次用户点击文本框。 datePicker正确显示并且在用户选择它在文本框中显示的日期之后。问题出在选择datePicker未关闭的日期之后。DatePicker在水龙头外不能关闭
这是我的代码:
class BController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var dateOfBirth: UITextField!
let datePicker = UIDatePicker()
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
// self.view.endEditing(true)
return true
}
func textFieldDidBeginEditing(textField: UITextField){
if textField == dateOfBirth{
// let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.Date
datePicker.backgroundColor = UIColor.blackColor()
datePicker.setValue(UIColor.whiteColor(), forKey: "textColor")
textField.inputView = datePicker
datePicker.addTarget(self, action: "datePickerChanged:", forControlEvents: .ValueChanged)
}
}
func datePickerChanged(sender: UIDatePicker){
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
// formatter.dateStyle = .ShortStyle
// formatter.timeStyle = .NoStyle
dateOfBirth.text = formatter.stringFromDate(sender.date)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
print("touch happened")
self.view.endEditing(true)
}
override func viewDidLoad() {
super.viewDidLoad()
dateOfBirth.delegate = self
text1.delegate = self
text2.delegate = self
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我控制台输出为:
无法识别的选择发送到实例为0x7终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因是:“ - [BController getCalendar:]:无法识别的选择器发送到实例0x78789050'
如何解决此问题?我正在使用Xcode 6.2。如果您需要更多信息,请告诉我。
请向我们展示getCalendar函数中的代码 – Asike
@Asike我没有一个名为getCalendar的方法。我是iSO开发的新手,我跟着这个过程的教程。我也看不到任何名为getCalendar的方法。我不知道这个错误是从哪里引用的。 –