iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0
Software Development

挑戰 30天內送審一支APP 系列 第 8

UITableViewController ( D Day + 7)

昨天我們用tableview做了一個餐廳清單的app。
複習一下會用到的函數有

// 每一組有幾個Cell
tableView(_:numberOfRowsInSection)”、
// 每個Cell要顯示的內容
tableView(_:cellForRowAtIndexPath:)”、
//處理 UItableview的外觀
UITableViewDelegate”、
//處理uitableview的內容
UITableViewDataSource”。

tableview就像一個汽車的空殼,他告訴開發者可以被用來製作表格(被當行駛工具),但是卻要開發者另外去找其他函數(零件)來匹配,這時就想,有沒有不用這麼麻煩可以直接使用的函示呢? 有的,就是”UITableViewController”,接下來就讓我們來嘗試如何用uitableviewcontroller製作。

  1. 首先跟昨天一樣,開啟 Xcode並建立一個 “Single view Application” 且任意命名。
  2. 因為這次要改用”uiviewcontroller”來製作,所以把不需要的元件刪除
    2.1 刪除 “UIviewcontroller
    點選 ViewController.swift後,選擇 Delete

    選擇 Move to Trash

2.2 刪除 “View Controller Scene
選擇 View Controller Scene後從鍵盤”delete”刪除

  1. 加入 “Table View Controller


    New -> File -> Cocoa Touch Class -> Next -> Create

    Class : RestaurantTableViewController
    SubClass of : UITableViewController

  2. 建立一個 Table View Controller
    4.1 將 “Table view Controller 拖曳到 mainboard

4.2 將 “table view controller” 與 “RestaurantTableViewController.swift”連結

4.3我們還有一些設定
點選”Prototype”

修改 Style -> Basic
identifier -> Cell
5. 回到 ** RestaurantTableViewController.swift**,我們會看到原本要手動加入的函數都已經被加入在裡面了。接下來就依序把表格數量、內容 依序完成
6. // 餐廳名:

var restaurantNames = ["Cafe Deadend", "homei", "Teakha", "Cafe Loisl", "Petite Oyster", "For Kee Restaurant", "Po's Atelier", "Bouke Street Bakey", "Haigh's Chocolate", "Palomino Espresso", "Upstate", "Traif", "Graham Avenue Meats", "Waffle & Wolf", "Five Leaves", "Cafe Lore", "Confessional", "Narrafina", "Donostia", "Royal Oak", "CASK pub and Kitchen"]

// 將restaurantNames assign 給 表格內容

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
            let cellIdentifier = "Cell"
            let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)
            cell.textLabel?.text = restaurantNames[indexPath.row]
        
            return cell

//修改 section (區塊)數目

 override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

//區塊內要有多少列述

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        
        return restaurantNames.count
    }
  1. 這樣就完成今天的實作




上一篇
# UITableView ( D day + 6 )
下一篇
在 tableview中加入圖片 ( D day + 8 )
系列文
挑戰 30天內送審一支APP 30

尚未有邦友留言

立即登入留言