iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Mobile Development

我將成為Swift之強者系列 第 10

Day 10 - 留言板實作:MainViewController 程式碼介紹

  • 分享至 

  • xImage
  •  

Day 10 - MainViewController 程式碼介紹

昨天我們完成了 MainViewController 的元件介紹,今天要來深入解析程式碼的實作內容。


Proprtty 宣告

// MARK: - Proprtty

let data: [String] = ["Apple", "Banana", "Cherry"]
var messageArray: [MessageBoard] = []
var isAscending = false
  • data:測試用的假資料。
  • messageArray:實際儲存資料庫留言的陣列。
  • isAscending:用來控制排序,true 表示舊到新,false 表示新到舊。

LifeCycle & UI 初始化

// MARK: - LifeCycle
override func viewDidLoad() {
    super.viewDidLoad()
    setUi()
}

// MARK: - UI Setting
func setUi() {
    tableSet()
    dataBase()
    btnSent.setTitle("送出", for: .normal)
}
  • viewDidLoad():畫面載入後會執行。
  • setUi():設定表格、讀取資料庫、初始化送出按鈕。

IBAction – 送出留言

@IBAction func btnSentAciton(_ sender: Any) {
    let realm = try! Realm()

    if btnSent.currentTitle == "送出" {
        if let user = txfUser.text, let message = txvContent.text, !user.isEmpty, !message.isEmpty {
            let currentTime = getSystemTime()
            let newMessage = MessageBoard(name: user, content: message, currentTime: currentTime)

            try! realm.write {
                realm.add(newMessage)
            }

            self.dataBase()
            txfUser.text = ""
            txvContent.text = ""
        } else {
            showAlert(message: "請輸入使用者名稱和內容")
        }
    }
}
  • 建立新留言,存入 Realm。
  • 重新讀取資料庫並刷新 TableView。
  • 清空輸入框。

IBAction – 排序留言

@IBAction func btnSortSection(_ sender: Any) {
    showSortOptions()
}

透過 showSortOptions(),可以選擇 舊到新新到舊,並重新整理 TableView。


編輯與刪除功能

程式中包含 滑動編輯與刪除

  • leadingSwipeActionsConfigurationForRowAt → 編輯留言。
  • trailingSwipeActionsConfigurationForRowAt → 刪除留言。

編輯時會跳出 Alert 讓使用者修改留言內容;刪除時會跳出確認視窗。


資料庫存取

func dataBase() {
    let realm = try! Realm()
    let messageBoards = realm.objects(MessageBoard.self)
    messageArray = Array(messageBoards)
    sortMessages()
    tbvTest.reloadData()
}
  • 從 Realm 讀取所有 MessageBoard
  • 轉成陣列並排序。
  • 重新載入 TableView。

小結

今天我們介紹了 MainViewController 的完整程式碼,包含新增、排序、編輯與刪除留言。
到這裡,我們的留言板功能已經具備最基本的 CRUD 功能。


上一篇
Day 9 -留言板實作:MainViewController 元件介紹
系列文
我將成為Swift之強者10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言