- Sử dụng UITableView để hiển thị danh sách
- Quản lý data source riêng biệt
- Cần implement các protocol UITableViewDataSource và UITableViewDelegate
- Xử lý việc chọn items trong bảng
Khai báo TableView outlet
// Khai báo TableView outlet
@IBOutlet weak var tableSound: UITableView!
Danh sách dữ liệu cho bảng
// Danh sách dữ liệu cho bảng
var soundNames: [String] = [
"catch-my-breath-ambient-boy",
"goodnight-moon-sensho",
"goodnight-sound",
"imple-mornings-lloom",
// ...các sound khác
]
Biến lưu trữ sound được chọn
// Biến lưu trữ sound được chọn
var selectedSound: String? = nil
extension VCSoundTable: UITableViewDataSource, UITableViewDelegate {
// Khai báo số lượng phần tử muốn hiển thị trong bảng
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sounds.count
}
// Truy cập và hiệu chỉnh nội dung của một cell cụ thể
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
// cell.textLabel?.text = sounds[indexPath.row] //predecated
var content = cell.defaultContentConfiguration()
content.text = sounds[indexPath.row]
content.secondaryText = "Soundtrack"
cell.contentConfiguration = content
return cell
}
// Xử lý sự kiện chọn một cell trong bảng
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
// Cách cũ
// let nextIndexPath = IndexPath(row: indexPath.row + 1, section: 0)
// let cell = tableView.cellForRow(at: nextIndexPath)
// Cách mới
let content = cell?.contentConfiguration as? UIListContentConfiguration
selectedSound = content?.text ?? "no thing"
print(selectedSound)
}
}