2016-07-06 73 views
0

我試圖讓用戶選擇一個日期並讓它顯示在文本字段中。我在網上發現了很多答案,但他們似乎都沒有工作。如果他們過時了,我不會。我在選擇器部分發現「datePickerView.addTarget」錯誤。當我運行應用程序時,我點擊文本字段,出現我想要的鍵盤。但是,只要我更改日期,應用程序就會崩潰。在TextField中輸入DatePicker問題

任何幫助將非常感謝!

@IBAction func dateFieldEditing(sender: UITextField) { 

    let datePickerView:UIDatePicker = UIDatePicker() 

    datePickerView.datePickerMode = UIDatePickerMode.Date 

    sender.inputView = datePickerView 

    datePickerView.addTarget(self, action:Selector("handleDatePicker"),forControlEvents: UIControlEvents.ValueChanged) 

} 


func handleDatePicker (sender: UIDatePicker){ 

    let formatter = NSDateFormatter() 
    formatter.dateStyle = .LongStyle 
    dateField.text = formatter.stringFromDate(sender.date) 
} 
+0

你的語法有點過時了。你的代碼基本沒問題,但它應該是'datePickerView.addTarget(self,action:#selector(self.handleDatePicker),forControlEvents:UIControlEvents.ValueChanged)''#selector(...。)'不知道爲什麼編譯器不會抱怨。 – beyowulf

+0

@beyowulf完美!有效。非常感謝。 –

回答

0

以下工作假設您通過Interface Builder將UITextField和UIDatePicker綁定爲IBOutlets。設置sender.inputView是不必要的。

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var datePicker: UIDatePicker? 
    @IBOutlet weak var textField: UITextField? 

    func handleDatePicker (sender: UIDatePicker) { 
     let formatter = NSDateFormatter() 
     formatter.dateStyle = .LongStyle 
     textField!.text = formatter.stringFromDate(sender.date) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.datePicker!.datePickerMode = UIDatePickerMode.Date 
     datePicker!.addTarget(self, action:#selector(handleDatePicker(_:)), forControlEvents: UIControlEvents.ValueChanged) 
    } 
}