2016-08-01 10 views
1

Meine swift-App verwendet einen UIDatePicker, damit der Benutzer ein Datum auswählen kann. Ich möchte es jedoch so einrichten, dass "Kein Datum eingefügt" angezeigt wird, wenn der Benutzer vergisst, es einzufügen.UIDatePicker erkennt nicht, dass aktuell das aktuelle Datum angezeigt wird.

Das Problem ist, dass, wenn ich eine if-Anweisung einrichten, die die Warnung basierend darauf anzeigt, ob das datePicker-Datum gleich dem aktuellen Datum ist, es einfach überhaupt nicht erkennt. Hier ist mein Code:

if datePicker.date == NSDate() { 
    warnL.text = "NO DATE INSERTED" 
} 

Was könnte ich dagegen tun? Jede Hilfe wäre sehr willkommen! Vielen Dank.

Antwort

2

Es ist ein einfacher Weg, zu wissen, ob ein Datum heute ist, ein Verfahren auf NSCalendar verwenden:

if NSCalendar.currentCalendar().isDateInToday(datePicker.date) { 
    warnL.text = "NO DATE INSERTED" 
} 

Welche Pflege der Zeitzone, locale und Typ des Kalender nimmt.

0

NSDate zurückgeben alle Datum, einschließlich der Zeit, so wird es nie gleich sein in Ihrer datePicker. Sie können Variable definieren, die Sie sagen, wenn das Datum geändert wurde:

var dateWasChanged = false 

Und dann können Sie sich registrieren Handler für Änderungsereignis:

func viewDidLoad() { 
    datePicker.addTarget(self, action: #selector(YourViewController.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged) 
} 

func handleDatePicker() { 
    dateWasChanged = true 
} 

Danach können Sie überprüfen, ob dateWasChangedtrue ist und zeigen Sie Ihre Informationen .

+0

Oh ok, jetzt verstehe ich, warum es nicht funktioniert hat! Nachdem ich jedoch die oben genannten Schritte genau befolgt habe, bekomme ich immer noch einen Fehler: 'Type' ViewController 'hat kein Mitglied' handleDatePicker '. Wie kann ich es zum Mitglied des ViewControllers machen oder es einfach funktionieren lassen? – Bossvanlindt

+0

Hier ist der Code, um es: 'var dateWasChanged = false datePicker.addTarget (self, Aktion: #selector (ViewController.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged) func handleDatePicker() { dateWasChanged = true } ' – Bossvanlindt

+0

Sie müssen 'var dateWasChanged = false 'als Ihre ViewControllers-Variable setzen und dann' addTarget' in 'viewDidLoad' aufrufen. Und 'handleDatePicker' wird als Methode in Ihren ViewController gestellt. – eMKa