因此,我现在正在使用Swift,并且在激活某个开关的某个时间出现了一条通知。
但是,当另一个开关被激活时,我希望在另一个时间发出另一个通知。
这是我的ViewController代码:
@IBOutlet var myDatePicker: UIDatePicker! @IBOutlet var mySwitch: UISwitch! @IBOutlet var mySwitchTwo: UISwitch! var localNotification:UILocalNotification = UILocalNotification() var localNotificationTwo:UILocalNotification = UILocalNotification() func datePicker() { myDatePicker.datePickerMode = UIDatePickerMode.Date } func datePickerDefaultDate() { myDatePicker.date = NSDate().xDays(+1) } func toggleSwitch(){ if mySwitch.on{ localNotification.alertAction = "Open App" localNotification.alertBody = "Please take your medication." localNotification.fireDate = myDatePicker.date.fireDate localNotification.repeatInterval = NSCalendarUnit.CalendarUnitDay localNotification.timeZone = NSTimeZone.localTimeZone() UIApplication.sharedApplication().scheduleLocalNotification(localNotification) } else { localNotification.alertAction = "Open App" localNotification.alertBody = "This notification should not appear" localNotification.fireDate = NSDate(timeIntervalSinceNow: 999999999999) } } func toggleSwitchTwo() { if mySwitchTwo.on{ localNotification.alertAction = "Open App" localNotification.alertBody = "Please take your medication." localNotification.fireDate = myDatePicker.date.fireDateTwo localNotification.repeatInterval = NSCalendarUnit.CalendarUnitDay localNotification.timeZone = NSTimeZone.localTimeZone() UIApplication.sharedApplication().scheduleLocalNotification(localNotificationTwo) } else { localNotification.alertAction = "Open App" localNotification.alertBody = "This notification should not appear" localNotification.fireDate = NSDate(timeIntervalSinceNow: 999999999999) } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func switchPressed(sender: AnyObject) { toggleSwitch() } @IBAction func switchPressedTwo(sender: AnyObject) { toggleSwitchTwo() } }
这是第一个快速文件,其中包含第一次切换的时间:
import Foundation public extension NSDate { func xDays(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var day: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var month: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var year: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDate: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 8, minute: 0, second: 0, nanosecond: 0)! } }
我希望下次通知时间是下午1点。这是我为此制作的快速文件:
import Foundation public extension NSDate { func xDaysTwo(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var dayTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var monthTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var yearTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDateTwo: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 13, minute: 0, second: 0, nanosecond: 0)! } }
我对此有疑问,在此先感谢您的帮助!
import UIKit class ViewController: UIViewController { @IBOutlet var myDatePicker: UIDatePicker! @IBOutlet var mySwitch7am: UISwitch! @IBOutlet var mySwitch8am: UISwitch! var localNotification7am = UILocalNotification() var localNotification8am = UILocalNotification() var notificationsCounter = 0 func datePicker() { myDatePicker.datePickerMode = UIDatePickerMode.Date } func datePickerDefaultDate() { myDatePicker.date = NSDate().hour > 8 ? NSDate().xDays(+1) : NSDate() } func notificationsOptions7am() { localNotification7am.timeZone = NSTimeZone.localTimeZone() localNotification7am.repeatInterval = .CalendarUnitDay UIApplication.sharedApplication().scheduleLocalNotification(localNotification7am) localNotification7am.alertAction = "Open App" localNotification7am.soundName = UILocalNotificationDefaultSoundName } func notificationsOptions8am() { localNotification7am.timeZone = NSTimeZone.localTimeZone() localNotification7am.repeatInterval = .CalendarUnitDay UIApplication.sharedApplication().scheduleLocalNotification(localNotification8am) localNotification7am.alertAction = "Open App" localNotification7am.soundName = UILocalNotificationDefaultSoundName } func toggleSwitch7am(){ localNotification7am.alertBody = "Here is the seven o'clock notification" localNotification7am.fireDate = mySwitch7am.on ? myDatePicker.date.fireDateAt7am : NSDate().xDays(+36500) } func toggleSwitch8am(){ localNotification8am.alertBody = "Here is the eight o'clock notification" localNotification8am.fireDate = mySwitch8am.on ? myDatePicker.date.fireDateAt8am : NSDate().xDays(+36500) } override func viewDidLoad() { super.viewDidLoad() datePicker() datePickerDefaultDate() notificationsOptions7am() notificationsOptions8am() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func switchedOn7am(sender: AnyObject) { toggleSwitch7am() } @IBAction func switchedOn8am(sender: AnyObject) { toggleSwitch8am() } }
扩充功能:
import Foundation extension NSDate { func xDays(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var day: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var month: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var year: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDateAt7am: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 7, minute: 0, second: 0, nanosecond: 0)! } var fireDateAt8am: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 8, minute: 0, second: 0, nanosecond: 0)! } func fireDateAt(hr:Int, min:Int) -> NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: hr, minute: min, second: 0, nanosecond: 0)! } }