2016-09-23 68 views
7

此代碼允許您使用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. 
    } 
    */ 
} 
+0

請參閱http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1以瞭解如何調試崩潰。如果您需要幫助,請使用更多關於崩潰的相關詳細信息更新您的問題(完整的錯誤消息並指出實際導致崩潰的行)。 – rmaddy

回答

13

的問題是與selector語法,從斯威夫特3,您需要指定的第一個參數名裏的selector,所以更改selector語法這樣。

datePicker.addTarget(self, action: #selector(datePickerChanged(sender:)), for: .valueChanged) 
+0

你是搖滾明星!非常感謝。這個伎倆。 –

+0

歡迎伴侶:) –

相關問題