我有一个应用程序,允许我添加通知,并在每天同时重复(例如,服用此药)
它是一个视图控制器,带有文本字段和按钮,用于在顶部添加信息,下面的表格视图显示已安排的通知。
我决定添加另一个视图控制器以允许用户编辑通知,因此我从视图控制器A中删除了文本字段,并将其添加到视图控制器B中,并使用按钮添加通知。但现在该应用程序无法正常工作,我无法收到通知。所以我的猜测是错误可能是我来回传递数据时。
当我加载视图A时,它会使用此函数加载通知:
func reloadDataAlarms() {
self.alarms = []
if let savedReminders = loadReminders() {
self.alarms += savedReminders
}
}
func loadReminders() -> [Reminder]? {
return NSKeyedUnarchiver.unarchiveObject(withFile: Reminder.ArchiveURL!) as? [Reminder]
}
但是因为表格应该填充,所以加载似乎没有问题。然后我使用一个没有发送任何信息的普通按钮seg来查看控制器B,但我再次运行与上面相同的代码来加载提醒数组。
当用户点击保存按钮时,我运行此功能:
func alertDayly(nameS: String, timeS: Date) {
let name = nameS
let time = timeS
let calendar = NSCalendar.current
let hourComp = calendar.dateComponents([.hour, .minute], from: time)
var dateComp = DateComponents()
dateComp.hour = hourComp.hour
dateComp.minute = hourComp.minute
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComp, repeats: true)
let notifications = UNMutableNotificationContent()
notifications.title = "Recordatorio"
notifications.body = name
notifications.sound = UNNotificationSound.default()
let request = UNNotificationRequest(identifier: "notification", content: notifications, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
reminder = Reminder(name: name, time: time as NSDate, notification: notifications)
alarms.append(reminder!)
saveReminders()
datePickerTxt.text = ""
addComent.text = ""
view.endEditing(true)
createActionAlert()
}
哪个结束运行此函数返回原始视图。
func createActionAlert() {
let refreshAlert = UIAlertController(title: "Guardado", message: "Recordatorio creado", preferredStyle: UIAlertControllerStyle.alert)
refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
self.navigationController?.popViewController(animated: true)
}))
present(refreshAlert, animated: true, completion: nil)
}
然后在视图控制器A中,我在viewWillAppear
中运行`reloadDataAlarms()函数来获取将填充表视图的数组。
Al数据在表格视图中正确显示,但通知从未发出声音。而且我在没有视图A /视图B分离的情况下运行相同的代码并且它工作正常,那么我做错了什么?是否有任何特殊注意事项,因为我使用另一个控制器来保存新通知?感谢