iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Mobile Development

IOS新手之旅系列 第 20

IOS新手之旅 Day20:鬧鐘(9)

  • 分享至 

  • xImage
  •  

昨天產生出推播了,今天來刪除特定推播吧。

刪除鬧鐘

在產生推播的時候,有設定他的ID,這裡是將他的ID跟Realm的資料ID綁在一起,這樣就能同時刪除資料和推播。

    @objc func deleteAlarm() {
        let realm = try! Realm()
        let cells = realm.objects(AlarmRealm.self)
        let deleteCell = cells[addPageValue.pageValue.selectCell]
    
        try! realm.write{
            realm.delete(deleteCell)
        }
        
        UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [cells[addPageValue.pageValue.selectCell].ID])
        
        self.navigationController?.popViewController(animated: true)
    }

關閉和開啟

偶爾只是需要將鬧鐘關閉,而不是刪除,所以需要在Cell裡寫些功能,讓鬧鐘可以自由開關。

    @IBAction func onOff(_ sender: Any) {
        let realm = try! Realm()
        let cells = realm.objects(AlarmRealm.self)
        try! realm.write {
            cells[tag].switchOnOff = !cells[tag].switchOnOff
        }
        let repeatDays = [cells[tag].Sunday,
                          cells[tag].Monday,
                          cells[tag].Tuesday,
                          cells[tag].Wednesday,
                          cells[tag].Thursday,
                          cells[tag].Friday,
                          cells[tag].Saturday]
        var repeatDayCount = 0
        
        let alarmVC = AlarmViewController()
        
        if onOffSwitch.isOn {
            alarmVC.createNotificationId(selectRow: tag)
            for i in 1...7 {
                if repeatDays[i-1] {
                    alarmVC.createNotification1(selectRow: tag, repeatDay: i)
                    repeatDayCount += 1
                }
            }
            if repeatDayCount == 0 {
                alarmVC.createNotification2(selectRow: tag)
            }
        } else {
            UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [cells[tag].ID])
        }
    }

到這裡,整個鬧鐘結束了,明天來處理畫面。


上一篇
IOS新手之旅 Day19:鬧鐘(8)
下一篇
IOS新手之旅 Day21:Tabbar
系列文
IOS新手之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言