Swift UITableView 多個section 分組顯示 🔢

在開發 iOS App 時,有時候會需要將資料以多個 section 分組顯示,而 UITableView 就是一個很好的解決方案。本文將介紹如何使用 Swift 來實現 UITableView 多個 section 分組顯示的功能。

前置準備

首先,我們需要先建立一個新的 Xcode 專案,並在 Storyboard 中加入一個 UITableView,並將它的 delegate 和 dataSource 都拉到 ViewController 上,如下圖所示:

UITableView

建立資料模型

接著,我們需要建立一個資料模型,用來存放我們的資料,以下是一個簡單的資料模型:

struct Section {
    var name: String
    var items: [String]
}

建立資料

接著,我們需要建立一個資料來源,用來存放我們的資料,以下是一個簡單的資料來源:

let sections = [
    Section(name: "Fruits", items: ["Apple", "Orange", "Banana"]),
    Section(name: "Vegetables", items: ["Carrot", "Potato", "Tomato"])
]

實現 UITableViewDataSource

接著,我們需要實現 UITableViewDataSource 中的方法,以便將資料顯示在 UITableView 上,以下是實現 UITableViewDataSource 中的方法:

func numberOfSections(in tableView: UITableView) -> Int {
    return sections.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return sections[section].items.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    let item = sections[indexPath.section].items[indexPath.row]
    cell.textLabel?.text = item
    return cell
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return sections[section].name
}

實現 UITableViewDelegate

最後,我們需要實現 UITableViewDelegate 中的方法,以便對 UITableView 進行一些設定,以下是實現 UITableViewDelegate 中的方法:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 44
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}

結論

透過以上的步驟,我們就可以使用 Swift 來實現 UITableView 多個 section 分組顯示的功能,這樣就可以將資料以多個 section 分組顯示在 UITableView 上,讓我們的 App 更加完整。

推薦閱讀文章

Swift UITableView 多個section 分組顯示
Swift UITableView 程式碼建立
Swift UITableView 自訂Cell
Swift UITableView 動態原型Cell
Swift UITableView 靜態Cell</a

延伸閱讀本站文章

更多swift相關文章

Swift UITableView 多個section 分組顯示 🔢

Categorized in:

Tagged in:

,