昨天我們完成了 MainViewController 的元件介紹,今天要來深入解析程式碼的實作內容。
// MARK: - Proprtty
let data: [String] = ["Apple", "Banana", "Cherry"]
var messageArray: [MessageBoard] = []
var isAscending = false
data
:測試用的假資料。messageArray
:實際儲存資料庫留言的陣列。isAscending
:用來控制排序,true
表示舊到新,false
表示新到舊。// MARK: - LifeCycle
override func viewDidLoad() {
super.viewDidLoad()
setUi()
}
// MARK: - UI Setting
func setUi() {
tableSet()
dataBase()
btnSent.setTitle("送出", for: .normal)
}
viewDidLoad()
:畫面載入後會執行。setUi()
:設定表格、讀取資料庫、初始化送出按鈕。@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: "請輸入使用者名稱和內容")
}
}
}
@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()
}
MessageBoard
。今天我們介紹了 MainViewController 的完整程式碼,包含新增、排序、編輯與刪除留言。
到這裡,我們的留言板功能已經具備最基本的 CRUD 功能。