swift中tableview的使用和注意事項

來源:互聯網
上載者:User

標籤:style   blog   使用   資料   io   for   cti   代碼   

今天使用swift寫了個簡單的tableView,文法和用法上跟oc沒多大的區別。但是還是有一些細節的地方需要注意一下的。

先上代碼

import UIKitclass ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {        var _tableView:UITableView?    override func viewDidLoad() {        super.viewDidLoad()               _tableView=UITableView(frame: self.view.bounds, style:.Plain)        self.view.addSubview(_tableView)        _tableView!.delegate=self        _tableView!.dataSource=self        }       func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int    {        return 20;    }    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {        var cell=tableView.dequeueReusableCellWithIdentifier("CellId") as? UITableViewCell        if (cell==nil){            cell=UITableViewCell(style: .Default, reuseIdentifier: "CellId")        }        cell!.textLabel.text="\(indexPath.row)"        return cell    }}

 注意以下幾點:

1,資料來源方法,

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
這兩個方法是必須實現的,如果你不實現這兩個方法,編譯器就會報錯。而不再是跟OC的時候一樣,啟動並執行時候才會報錯
所以,當你寫完_tableView!.dataSource=self的時候,會出現報錯,然後你在頭部加班UITableViewDataSource,依然報錯。當你實現了上面兩個方法後,錯誤就會消失

2,cell的重用

 var cell=tableView.dequeueReusableCellWithIdentifier("CellId") as? UITableViewCell
這裡需要注意的一點是,後面強轉成UITableViewCell的時候,在as後面帶上個問號,因為在緩衝池裡不一定能找到可以重用的cell,不帶問號就會引起cell為nil的錯誤

初學經驗,如有不妥,望大神指點


 

相關文章

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.