第 10 章
使用 UIAlertController 與表格視圖互動

There is no learning without trying lots of ideas and failing lots of times.

- Jonathan Ive

至目前為止,我們主要關注在以表格視圖呈現資料的部分,我猜你一定在想「該如何與表格視圖做互動,並取消列的選取」,這即是本章將討論的內容。

我們將繼續打造前面一章所建立的 FoodPin App,來增加二個功能:

  • 當使用者點擊一個Cell時,選單會提供兩種選項:打電話」(Call)打卡(Check-in )
  • 當使用者選擇打卡(Check-in),顯示一個心型圖示。

透過這二個新功能,你也會學到如何使用 UIAlertController,這是在 iOS App 中很常用的訊息提示功能,如圖10.1 所示。

圖 10-1. Facebook 與 iTunes App 中的訊息提示範例
圖 10-1. Facebook 與 iTunes App 中的訊息提示範例
Quick note: 這個類別在 iOS 8( 或者之後的版本)取代了用於顯示訊息提示的UIActionSheet 與 UIAlertView 類別。.

了解UITableViewDelegate協定

在第8 章中, 我們首先建構了 SimpleTable 表格視圖 App, 接著我們又在 RestaurantTableViewController 類別採用了兩個委派:UITableViewDelegate 以及 UITableViewDataSource,我已說明過 UITableViewDataSource協定,但是鮮少提及到 UITableViewDelegate 協定。

如前所述,委派模式在 iOS 程式開發中很常見。每一個委派負責特定的角色或工作,如此一來,可以讓系統保持簡潔。當一個物件需要去執行某項工作,它仰賴另一個物件來幫忙處理。在軟體設計,通常稱為「關注點分離」(separation of concern )。

UITableView 類別應用了這樣的設計觀念,這兩個協定是為了不同目的來設計, UITableViewDataSource 協定定義了處理表格資料的方法,它依靠委派來提供表格資料, 另外,UITableViewDelegate 協定則負責設定表格視圖的區塊標題及註腳,還有像是表格列的選擇及 Cell 的排序。

要處理列的選取動作,我們將會實作 UITableViewDelegate 協定的其中一些方法。

本文摘自《iOS 13 App程式設計實戰心法》一書,博碩授權轉載。如果你想更深入學習Swift程式設計和下載完整程式碼,你可以從AppCoda網站購買完整電子版。

results matching ""

    No results matching ""