第 2 章
使用 Diffable 數據源為 Table View 加入區塊與索引列表
倘若你想要在 UITableView 呈現大量的資料,你最好需要重新思考一下資料呈現的方式。因為表格列不斷地增加,表格視圖使用起來會變得不方便。一個改善使用者體驗的方式是將資料組織成一個區塊(section)。將相關資料群組在一起,可以提供使用者更佳的資料存取方式。
此外,你可以在表格視圖實作索引列表(index list)。索引表格視圖與一般樣式的表格視圖幾乎雷同,唯一的差異就是在表格視圖的右邊有包含一個索引列表。索引表格在 iOS App 很常見。最知名的例子便是 iPhone 內建的通訊錄(Contact)App。透過索引值的滾動瀏覽方式,使用者可以在不需要滑動每一個區塊的情況下,迅速存取特定的表格區塊。
我們來看如何在簡單表格 App 中,加入一個區塊以及索引列表。
倘若你已經對 UITableView
實作有了基本的了解,要加入一個區塊以及索引列表並不難。基本上,想要在 UITableview 中加入一個區塊以及索引列表,你必須要處理定義在 UITableViewDiffableDataSource
協定的這些方法:
tableView(_:titleForHeaderInSection:)
方法 – 回傳不同區塊的表頭(header)標題。這個方法是可選的,倘若你不指定標題給這區塊也可以。sectionIndexTitles(for:)
方法 – 回傳顯示在表格視圖右邊的索引列表的索引標題。舉例來說,你可以回傳包含A
到Z
的字串陣列。tableView(_:sectionForSectionIndexTitle:at:)
方法 – 回傳區塊索引,這個區塊索引值為使用者按下特定索引時,表格視圖所跳至區塊的值。
沒有比用實際例子來解釋這個應用更好的方式。照例,我們將會建構一個簡單的 App,讓你可以在實作這個 App 後能對索引列表更有概念。
索引列表範例 App 簡述
首先快速看一下我們準備建立的範例 App。這是一個非常簡單的 App,可以在標準表格視圖中顯示一系列的動物清單。除了列出所有動物外,這個 App 將動物群組起來至不同區塊,並顯示一個可以快速存取的索引列表。這個截圖顯示範例 App 最後完成的樣貌。
本文摘自《iOS 17 App程式設計進階攻略》一書。如果你想更深入學習Swift程式設計和下載完整程式碼,你可以從AppCoda網站購買完整電子版,全書範例檔皆可下載。