標籤: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的錯誤
初學經驗,如有不妥,望大神指點