이 코드는 Xcode 7에 datePicker
을 사용하여 textField
을 업데이트 할 수 있지만 Xcode 8 및 Swift 3에서 구현하려고하면 App이 충돌하고 AppDelegate.swift 파일에 SIGABRT 오류가 발생합니다. 모든 @IBs를 확인했는데 삭제해야 할 기타 연결이 없습니다. 모든 지침은 크게 감사하겠습니다.스위프트 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.
}
*/
}
크래시 디버깅 방법은 http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1을 참조하십시오. 도움이 필요하면 충돌에 대한 더 자세한 내용으로 질문을 업데이트하십시오 (완전한 오류 메시지와 실제로 충돌을 일으키는 선을 지적하십시오). – rmaddy