這次要講解的是主頁面和 Notifaction 的程式碼,鬧鐘的部分大概今天會完全結束!
這部分是一個 TabelView 那我們的內容就是要去用到 Realm 的本地資料
但我們要先註冊一個 TabelView
override func viewDidLoad() {
super.viewDidLoad()
let nib = UINib.init(nibName: "alarm_realm_cell", bundle: nil)
tableview.register(nib, forCellReuseIdentifier: "alarm_realm_cell")
tableview.dataSource = self
tableview.delegate = self
}
註冊的程式碼大同小異,這裡就不再贅述
再來是內容的撰寫
因為我們在 Realm 的時和分是分開來儲存的,並且型態是 Int
但我們需要在 Cell 顯示的值必須都是兩位數,如果數字只有個位數的話,需要在數字前面補零!
if table[indexPath.row].hour < 10 && table[indexPath.row].minute < 9 {
cell.list_time.text = "0\(table[indexPath.row].hour):0\(table[indexPath.row].minute)"
}
else if table[indexPath.row].hour < 10 {
cell.list_time.text = "0\(table[indexPath.row].hour):\(table[indexPath.row].minute)"
}
else if table[indexPath.row].minute < 10 {
cell.list_time.text = "\(table[indexPath.row].hour):0\(table[indexPath.row].minute)"
}
else {
cell.list_time.text = "\(table[indexPath.row].hour):\(table[indexPath.row].minute)"
}
大致上會像這個樣子!
再來就是需要判斷如果 Cell 裡的 Switch 是開啟狀態,那就需要將 Switch 的狀態放到 Realm 裡面,但我們要如何去讓電腦判斷是哪個 Switch 對應到哪個 Cell 呢?
我們可以用 Switch 的 Tag 去判斷!
cell.list_switch.tag = indexPath.row //讓 Switch 的 Tag 去綁定 TabelView 的 indexPath.row 就行囉!
if cell.list_switch.isOn == true {
try! realm?.write {
table[indexPath.row].alarm_switch = true
}