頁面間的資料傳遞(二)

在上一篇我們提到的資料傳遞是利用Button Title作為傳遞的資料
此篇我們找到先前做的動畫回憶錄,再次稍微改變一下作法
以Member頁面為例,每個cell都對應一個ViewController
如果利用資料傳遞的方式就可以節省很多獨立的ViewController

首先要建立Table的資料,拉出一個TableViewController
並在controller上embed一個NavigationController作為換頁後返回使用
cell的部分選用Dynamic prototypes,與先前的Static cell不一樣
並在cell上設計我們需要的元件,這邊需要用到imageView與Label

Table View Controller setting

我們還需要針對這個TableView產生一個繼承UITableViewController的檔案
還有我們需要一組名為Member的struct來儲存我們要的資料
並宣告一個變數用來放array資料

struct data
var members = [Member]()

底下我們先針對UITableViewController檔案裡面的一些function/參數做說明

在ViewDidLoad()底下預先指定members的內容
(原先的member人數18人,此處先取三位,其餘以此類推)
(info的內容先簡短以abcxxx暫定)

members.append(Member(name: “日向仁”, imageName: “member01”, info: “abc123”))
members.append(Member(name: “月城飛鳥”, imageName: “member02”, info: “abc456”))
members.append(Member(name: “星山吼兒”, imageName: “member03”, info: “abc789”))

目前Section只有一個,所以numberOfSections回傳數量為1

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

其後有兩組名為tableView的function,作用是不一樣的,參數也不一樣
不過第二項預設是註解的,針對要使用Dynamic prototypes的case來說是要解開其註解的,這塊可以用來設計cell內容

  1. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    用來設定cell數量,這個例子裡回傳的是members.count
    Load的時候就會根據count數量來顯示cell
  2. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    這個function主要用來要設計cell內容,還需要新增一組繼承TableViewCell的檔案,並在裡面將cell中會用到的元件拉IBOutlet到檔案中,本例中會用到的有ImageView 與 Label,如下圖。
    就可以直接呼叫元件修改其內容
IBOutlet setting for UITableViewCell

回到tableView中Cell就可以根據來源修改其元件上的內容

Cell setting

完成以上工作即可將內建的資料內容顯示在表格上面

接下來拉一個空白的頁面,放上ImageView, Label並結合前一個主題頁面間的資料傳遞(一) “傳遞資料到下一頁”的內容,就可以將我們內建的資料完整資訊顯示在新的頁面當中。

ImageView用來顯示資料中的imageName,Label用來顯示資料中的info,至於name的部分就放在新頁面的NavigationItem的Title上即可。這樣就可以完成一個包含表格資訊跳轉頁面的列表App

底下輸出一個簡易的操作gif,右上方有個Edit是之後要再新增的內容。Comming Soon~

Demo

Git上傳的內容已經包含可以簡易的修改現有資料,不過Edit頁面尚未做設計,單純只放簡單的元件在上面。

--

--