2016-07-06 4 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 Perfect !! 그것은 효과가 있었다. 고마워요. –

답변

0

다음 작품은, 당신이의 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) 
    } 
}