2014-07-03 20 views
15

Bir textfield'ım var ve seçildiğinde klavye yerine bir datepicker açılır, ancak yalnızca ilk günkü tarihler ile güncellenir. Kullanıcı tarihi değiştirir, ancak metin alanı güncellenmeye devam etmez. Sorun nedir?Swift: UIDatePicker'ı UITextField girişi olarak kullanmaYönetmiyor Güncelleme

@IBAction func dp(sender: UITextField) { 
    var DatePickerView : UIDatePicker = UIDatePicker() 
    DatePickerView.datePickerMode = UIDatePickerMode.Date 
    textfieldjobdate.inputView = DatePickerView 
    DatePickerView.addTarget(self, action: Selector("handleDatePicker"), forControlEvents: UIControlEvents.ValueChanged)  
} 

func handleDatePicker() { 
    var DatePickerView : UIDatePicker = UIDatePicker() 
    var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd MMM yyyy" 
    textfieldjobdate.text = dateFormatter.stringFromDate(DatePickerView.date) 
} 
+0

geçmek işleve bir parametre eklemek gerekir: https://iosdevcenters.blogspot.com/2016 /03/ios9-uidatepicker-example-with.html –

cevap

41

Sizin handleDatePicker yöntemi denir yeni DatePicker her zaman başlatmasını edilir: Ben DatePicker arayıp tarih benim metin alanına girilen ediliyor kontrol nasıl

budur. Bu demo ile basit bir koddur Bkz gönderici (fonksiyon dp oluşturulan DatePicker)

@IBAction func dp(_ sender: UITextField) { 
    let datePickerView = UIDatePicker() 
    datePickerView.datePickerMode = .date 
    sender.inputView = datePickerView 
    datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged) 
} 

func handleDatePicker(sender: UIDatePicker) { 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd MMM yyyy" 
    textfieldjobdate.text = dateFormatter.string(from: sender.date) 
} 
+0

Cevabınız için teşekkürler, ancak uygulayamadım - sadece programı çöker. Ayrıca DatePicker'ı UIDatePicker'a değiştirmek zorunda kaldım, ama işe yaramıyor - üzgünüm. – agf119105

+0

Başladığı hata "tanınmayan seçici" func dp'yi değiştirmek zorunda mıyım? – agf119105

+0

Evet, "handleDatePicker:" için doğru seçiciyi kullanmanız gerekiyor, çünkü bu bir parametre alıyor. –

0
let selectedDate = datePicker.date 
    print(selectedDate) 
    let formatter = DateFormatter() 
    formatter.dateFormat = "dd/MM/yyyy" 
    let strDate = formatter.string(from: selectedDate) 
    self.labelDate.text = strDate 
+0

Kod parçacığınız sorunu çözebiliyor olsa da, kodunuzun amacını (sorunu nasıl çözdüğünü) açıklamalısınız. Ayrıca, https://stackoverflow.com/help/how-to-answer adresini de kontrol etmek isteyebilirsiniz. –