Swift之UITableView的使用

來源:互聯網
上載者:User

標籤:

Swift和OC中UITableView的使用基本是差不多,只是有一些文法上的差異。下面我們一步一步從0開始寫一個tableView。一、建立tableView
import UIKitlet ID = "Cell" //cell的ID,建議像這樣寫一個常量,不要直接使用"Cell"class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { //0.遵守協議    override func viewDidLoad() {        super.viewDidLoad()                //1.建立UITableView(跟OC幾乎一樣)        var tableView = UITableView(frame: view.bounds, style: UITableViewStyle.Plain)                //2.註冊Cell        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: ID)        //下面這種寫法也是可以的        //tableView.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: ID)                //3.設定資料來源和代理        tableView.dataSource = self        tableView.delegate = self;                //4.添加到view中        self.view.addSubview(tableView)    }}

注意:1.協議的寫法,不需要寫<>。2.上面的代碼中第0步和第3步會報錯,不要驚慌,暫時無視,並不是代碼有問題,是因為我們沒有實現相應的協議方法。

二、準備假資料

    // 懶載入    lazy var datas: [Int] = {        // 建立一個存放int的數組        var nums = [Int]()        // 添加資料        for i in 0...50 {            nums.append(i)        }        // 返回        return nums    }()

這裡採用懶載入,Swift的懶載入和OC差別還是比較大的,需要注意一下。

三、實現協議方法

  // MARK: - UITableViewDataSource & UITableViewDelegate    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        //返回有多少行Cell, 這裡返回數組的count        return datas.count    }        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        // 獲得cell        let cell = tableView.dequeueReusableCellWithIdentifier(ID, forIndexPath: indexPath) as! UITableViewCell                // 配置cell        cell.textLabel!.text = "假資料 - \(datas[indexPath.row])"                // 返回cell        return cell    }

解釋幾個可能有點迷糊的地方:

  1.as:這個東西比較符合人類思維,給蘋果點個贊。意思就是把什麼當作什麼,在上面的代碼中,由於方法dequeueReusableCellWithIdentifier的傳回值是

  AnyObject(也就是OC中的id類型),所以需要通過as告訴編譯器這實際上是一個UITableViewCell。

  2.!(驚嘆號):這玩意就是告訴編譯器我確定這裡的的cell.textLabel一定是非nil的, 可以放心的執行後面的。as後面的!也是一樣的道理。

至此,可以編譯運行看看效果了.

四、增加左滑刪除功能

實現一個方法即可

 // 提交編輯操作 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, 
  forRowAtIndexPath indexPath: NSIndexPath) { // 如果是刪除操作 if editingStyle == .Delete { // 從數組中移除對應位置的資料 datas.removeAtIndex(indexPath.row) // 刪除表格中對應行的資料 tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) } }

大功告成,運行看看效果吧。祝大家生活愉快!

 

 

 

Swift之UITableView的使用

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.