昨天我們用tableview做了一個餐廳清單的app。
複習一下會用到的函數有
// 每一組有幾個Cell
“tableView(_:numberOfRowsInSection)”、
// 每個Cell要顯示的內容
“tableView(_:cellForRowAtIndexPath:)”、
//處理 UItableview的外觀
“UITableViewDelegate”、
//處理uitableview的內容
“UITableViewDataSource”。
tableview就像一個汽車的空殼,他告訴開發者可以被用來製作表格(被當行駛工具),但是卻要開發者另外去找其他函數(零件)來匹配,這時就想,有沒有不用這麼麻煩可以直接使用的函示呢? 有的,就是”UITableViewController”,接下來就讓我們來嘗試如何用uitableviewcontroller製作。
2.2 刪除 “View Controller Scene”
選擇 View Controller Scene後從鍵盤”delete”刪除
加入 “Table View Controller”
New -> File -> Cocoa Touch Class -> Next -> Create
Class : RestaurantTableViewController
SubClass of : UITableViewController
建立一個 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
}