【发布时间】:2016-12-07 00:45:24
【问题描述】:
在我的应用程序中,我有一个文本字段来添加出生日期。一旦用户点击文本字段,我就会在弹出窗口中添加一个 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 我没有名为 getCalendar 的方法。我是 iSO 开发的新手,我遵循了这个过程的教程。我在那里也看不到任何名为 getCalendar 的方法。我不知道这个错误引用来自哪里。
标签: ios swift datepicker