當你寫:
var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
要初始化使用其構造一個新的小區。
當你寫:
var cell = self.tableView.dequeueReusableCellWithIdentifier("cell")
你出列的單元格,所以你與標識符cell
已經在tableView
已經登錄假設你的細胞。
通常,如果電池被設計在Interface Builder
並設置爲原型細胞,或者如果你已經使用方法self.tableView.registerClass(MyCell.classForCoder(), forCellReuseIdentifier: "cell")
你將不再需要使用構造,因爲它是在tableView
已經初始化註冊您的電池再利用。
但是,如果你的設計程序,如創建UILabel
,UIImage
或任何組件,您將必須使用構造函數來代替,然後使用列方法。
所以,如果你必須使用構造函數(因爲你的代碼初始化一切)你的代碼看起來就像這樣:
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
}
cell.cellLabel.text = "Hello world"
cell.cellImage.image = UIImage(named: "funny_cat.jpg")
return cell
}
但是如果你的細胞被註冊爲重複使用,或者如果它是一個原型細胞,將只需使用
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.cellLabel.text = "Hello world"
cell.cellImage.image = UIImage(named: "funny_cat.jpg")
return cell
}
我認爲最好的地方去尋找如何tableview中工作,你應該看看這裏的官方文檔:Table View Programming Guide for iOS
明白了,但是在故事板中定製單元而不是寫所有內容更容易嗎? – Abdou023 2014-09-25 20:26:21
是的,但有時你只是沒有選擇...再次看看官方文檔,你將獲得所有你需要的信息 – klefevre 2014-09-25 20:28:08