iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Mobile Development

從零開始的IOS開發日常系列 第 24

[鐵人賽 Day 24] Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (6)

  • 分享至 

  • xImage
  •  

這次要講解的是主頁面和 Notifaction 的程式碼,鬧鐘的部分大概今天會完全結束!

這部分是一個 TabelView 那我們的內容就是要去用到 Realm 的本地資料
但我們要先註冊一個 TabelView

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
            }

上一篇
[鐵人賽 Day 23] # Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (5) 將資料轉到資料庫儲存以及“新增鬧鐘介面功能完整介紹”
下一篇
[鐵人賽 Day 25] Swift 仿刻 IOS 內建的 Clock - 馬錶 (1) 功能及 UI 介紹
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言