看板 KnucklesNote
作者 標題 [Xcode][Swift3] TableView 加上"載入更多"按鈕
時間 2017-04-13 Thu. 22:44:39
依照這篇 [Xcode][Swift3] 使用 Alamofire 存取網站資料 - KnucklesNote板 - Disp BBS
的方法,再加一個看板列表頁
在看板列表的 TableView 中,預設載入了 20 筆資料
當滑動到底時,想要顯示一個「載入更多」的按鈕
點了以後會再多載入 20 筆資料
在 TableView 設定 Prototype Cells 的數量為 2
第二個 Cell 的 Identifier 輸入「BoardListMoreCell」
將 Style 改為「Basic」,將 Label 的文字改為「點此載入更多」
自訂類別使用預設的 UITableViewCell
修改看板列表的類別程式檔
用來存列表資料的陣列設定為
var boardListArray:[Any] = []
一開始先設為空的陣列加上成員變數
var numPageLoad: Int = 0
記錄已載入了幾頁修改從網路載入資料的成員函數 loadData()
將 numPageLoad 加入網址參數,用來讀取要載入哪一頁的資料
將讀取到的資料使用 append 的方式加入 boardListArray
然後將 numPageLoad 加 1,呼叫 TableView 重載資料
例如
if let blist = data["blist"] as? [Any] {
self.boardListArray.append(contentsOf: blist)
self.numPageLoad += 1
self.tableView.reloadData()
}
self.boardListArray.append(contentsOf: blist)
self.numPageLoad += 1
self.tableView.reloadData()
}
修改 tableView(_:numberOfRowsInSection:) 的內容為
var num: Int = 0
if self.boardListArray.count > 0 {
num = self.boardListArray.count + 1
}
return num
當 boardListArray 有值時,要多顯示一列,用來當載入更多的按鈕if self.boardListArray.count > 0 {
num = self.boardListArray.count + 1
}
return num
修改 tableView(_:cellForRowAt:) 的內容為
if indexPath.row < self.boardListArray.count {
// 原本的內容
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "BoardListMoreCell", for: indexPath)
// 可以在這修改按鈕的顯示的文字
cell.textLabel?.text = "已載入 \(self.numPageLoad) 頁,點此載入更多"
return cell
}
// 原本的內容
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "BoardListMoreCell", for: indexPath)
// 可以在這修改按鈕的顯示的文字
cell.textLabel?.text = "已載入 \(self.numPageLoad) 頁,點此載入更多"
return cell
}
加上成員函數 tableView(_:didSelectRowAt:)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == self.boardListArray.count {
loadData()
}
}
設定點擊「載入更多」那一列時,執行 loadData()if indexPath.row == self.boardListArray.count {
loadData()
}
}
--
※ 作者: Knuckles 時間: 2017-04-13 22:44:39
※ 編輯: Knuckles 時間: 2017-04-13 23:00:15
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 234
回列表(←)
分享