iT邦幫忙

DAY 22
1

Swift - 從菜菜鳥到菜鳥的 30 天系列 第 22

[Swift-d22] - 實戰開發 - TODOList - Show View 1

  • 分享至 

  • xImage
  •  

小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/

好讀版 - http://blog.kerkerj.in/blog/2014/10/22/swift-d22/

Github link

接著我們要讓主頁顯示一些假資料:

由於我們未來接的 api 的資料會是 todo_id + content

因此我們先產生一個 dictionary array 來存放我們的假資料

var fakeData = [[String:String]]()
fakeData = [
  ["id": "1", "content": "A"],
  ["id": "2", "content": "B"],
  ["id": "3", "content": "C"],
]

再來對主頁的 controller 新增 tableView 上去

並且對 UITableView 加入 delegate 以及 datasource

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var fakeData = [[String:String]]()
    var tableView: UITableView?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        fakeData = [["1": "A"], ["2": "B"], ["3": "C"]]
        self.view.backgroundColor = UIColor.yellowColor()

        self.tableView = UITableView(frame: self.view.frame)
        self.tableView?.delegate = self
        self.tableView?.dataSource = self

        self.view.addSubview(self.tableView!)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

此時編譯器就會要求實作 UITableViewDataSource, UITableViewDelegate 的 methods

實作完就可以讓 TableView 顯示資料, 這我們之前也都有提到過了~

在這邊我們也同時使用自訂的 CustomTableViewCell, 簡單對 cell 改個顏色,雖然沒什麼多大用處 XD

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.fakeData.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell: CustomTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CustomCell") as? CustomTableViewCell

    if cell == nil {
        var objects = NSBundle.mainBundle().loadNibNamed("CustomTableViewCell", owner: self, options: nil)
        cell = objects[0] as? CustomTableViewCell
    }

    cell!.textLabel?.text = (self.fakeData[indexPath.row])["content"]

    return cell!
}

不過可以看到有小瑕疵,就是選取後他並不會回覆成原本的模樣

因此加入 tableView didSelectRowAtIndexPath:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    // 回覆非選取狀態
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
}

明天就會提到換頁以及刪除的作法!


上一篇
[Swift-d21] - 實戰開發 - TODOList - 前置設定
下一篇
[Swift-d23] - 實戰開發 - TODOList - Show View 2, Delete View
系列文
Swift - 從菜菜鳥到菜鳥的 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
blackcode
iT邦新手 5 級 ‧ 2015-09-17 21:24:42

版大你好:
我最近才在學寫swift有個問題想請教你
上方自訂的 CustomTableViewCell 好像沒看到相關的 function
cell繼承自訂的 CustomTableViewCell 編譯器會顯示錯誤
請問可以幫解答自訂的 CustomTableViewCell部分嗎?? 感恩謝謝

我要留言

立即登入留言