[UIKit] TableView Handling Snippet

UIKit 27 Th10 2024
  • 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

Tạo extension để conform với UITableView protocol

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)

    }
}

Tags

Tony Phạm

Là một người thích vọc vạch và tò mò với tất cả các lĩnh vực từ khoa học tự nhiên, lập trình, thiết kế đến ... triết học. Luôn mong muốn chia sẻ những điều thú vị mà bản thân khám phá được.