Swift 3 | Xcode 8 datePicker更新UItextField
问题描述:
此代码允许您使用datePicker
更新textField
Xcode 7,但是当我尝试在Xcode 8和Swift 3中实现它时,应用程序崩溃并在AppDelegate.swift文件中引发SIGABRT错误。我检查了所有的@IB,并且没有任何需要删除的杂项连接。任何指导将不胜感激。Swift 3 | Xcode 8 datePicker更新UItextField
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var eventStartText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
eventStartText.delegate = self
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: TextField Delegate
func datePickerChanged(sender: UIDatePicker) {
let formatter = DateFormatter()
formatter.dateStyle = .full
eventStartText.text = formatter.string(from: sender.date)
print("Try this at home")
}
func textFieldDidBeginEditing(_ textField: UITextField) {
let datePicker = UIDatePicker()
textField.inputView = datePicker
datePicker.addTarget(self, action: (Selector(("datePickerChanged:"))), for: .valueChanged)
print("This Worked")
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
eventStartText.resignFirstResponder()
return true
}
// MARK: Helper Methods
func closekeyboard() {
self.view.endEditing(true)
}
// MARK: Touch Events
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
closekeyboard()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
答
的问题是与selector
语法,从斯威夫特3,您需要指定的第一个参数名里的selector
,所以更改selector
语法这样。
datePicker.addTarget(self, action: #selector(datePickerChanged(sender:)), for: .valueChanged)
+0
你是摇滚明星!非常感谢。这个伎俩。 –
+0
欢迎伴侣:) –
请参阅http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1以了解如何调试崩溃。如果您需要帮助,请使用更多关于崩溃的相关详细信息更新您的问题(完整的错误消息并指出实际导致崩溃的行)。 – rmaddy