Ich habe eine App, die Ihnen die Möglichkeit bietet, eine tägliche Erinnerung zu erhalten, um eine Aufgabe abzuschließen. Um es mit meinen Beta-Benutzern auf TestFlight zu testen, habe ich einen Dummy UIViewController
eingerichtet und einen Schalter darin platziert, um Erinnerungen ein- und auszuschalten und eine UIDatePicker
(nur Zeitmodus), um die Zeit einzustellen. Wenn Sie die Ansicht zum ersten Mal laden, liest sie die vorhandene UILocalNotification
und zeigt die aktuelle eingestellte Zeit auf der UIDatePicker
. Sie können die Benachrichtigungszeit aktivieren/deaktivieren und ändern. Klappt wunderbar.UIDatePicker reagiert nicht auf setDate
Aber jetzt bin ich fertig testen es mit meinem TestFlight
Benutzer und ich verschiebe die Funktionalität auf einen neuen Bildschirm. Also habe ich das Ganze von Grund auf neu aufgebaut, nur dass ich den Code aus dem alten Test View Controller
auf den neuen Code kopiert und eingefügt habe. Sie sind also absolut identisch - fast.
Der einzige Unterschied ist, dass der neue in einem anstelle von UIViewController
ganz von selbst platziert wurde - auf diese Weise passt es gut mit den übrigen Einstellungen der App.
Am neuen Standort wird der Schaltzustand richtig eingestellt, abhängig davon, ob der Benutzer Erinnerungen aktiviert hat oder nicht, und ich kann sie verwenden, um sie zu aktivieren/deaktivieren. Ich bin auch in der Lage, die Erinnerungszeit zu einer neuen Zeit zu ändern. Klappt wunderbar. Wenn ich jedoch den neuen Standort lade, zeigt die UIDatePicker
die aktuelle Zeit anstelle der Zeit, die in UILocalNotification
vorher festgelegt wurde. Ich kann es nicht erklären. Wie gesagt, der Code wurde kopiert und vom alten auf den neuen Ort eingefügt. Das Alte funktioniert immer noch. Das Neue nicht. Unten ist der Code in Frage.
Ich kann nur annehmen, dass es etwas damit zu tun hat, innerhalb einer UITableViewCell
zu sein, da das der einzige Unterschied ist, aber ich kann nicht ergründen, warum in der Welt das wichtig wäre.
Edit: Ich habe High und Low für eine Lösung gesucht, aber habe keine gefunden. Es scheint, dass die Verwendung von setDate einfach keinen Effekt hat. Ich habe alle meine Variablen gedruckt, um zu sehen, was sie zurückgeben, und alles ist korrekt. Es ist fast so, als ob etwas daran gehindert wird, auf UIDatePicker
auf setDate zu reagieren. Ich kann nirgendwo sonst einen Artikel finden, der das anspricht. Ich hoffe wirklich, dass jemand da draußen schon einmal darauf gestoßen ist.
Danke für jede Hilfe !!
if let notificationArray = UIApplication.sharedApplication().scheduledLocalNotifications {
if notificationArray.count != 0 {
let oneNotification = notificationArray[0]
oneNotification.timeZone = NSTimeZone.defaultTimeZone()
let savedDate = oneNotification.fireDate
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = calendar.component(.Hour, fromDate: savedDate!)
components.minute = calendar.component(.Minute, fromDate: savedDate!)
timePicker.setDate(calendar.dateFromComponents(components)!, animated: false)
}
}