![](/img/trans.png)
[英]Passing data from UItableviewController to UItableViewcell in ios
[英]passing data from UItableviewController to UItableViewcell
我不明白為什么某些值從tableViewController
很好地傳遞到我的自定義UITableViewCell
,而另一些則不能。
在我的UItableviewController.cellForRowAtIndexPath
,在返回此單元格之前,我設置了一些值的單元格:
cell.label1.text = myCustomObject.id
cell.label2.text = myCustomObject.path
cell.myCustomObjectCellMember = myCustomObject
cell.pathCellMember = myCustomObject.path
return cell
在自定義UITableViewCell
端,在awakeFromNib
方法中,前兩個單元格成員均為Ok,后兩個單元格包含nil
。
前兩個單元格成員與后兩個單元格成員之間的唯一區別是,前兩個單元格成員聲明為IBOutlet
並鏈接到情節提要,而另兩個單元格未鏈接到UI。 但是,從tableViewController
寫入這些變量應該沒問題吧?
這是自定義UITableViewCell
中這些變量的聲明:
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
var pathCellMember : String!
var myCustomObjectCellMember: MyCustomObjectCellMember!
登錄時(在UITableViewCell.awakeFromNib
內部), label1.text
和label2.text
顯示正確的值,但是pathCellMember
和myCustomObjectCellMember
顯示nil
而不是UItableviewController.cellForRowAtIndexPath
分配的值。
根據要求,提供更明確的代碼:
class CustomCellTableViewCell: UITableViewCell {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
var pathCellMember : String!
var myCustomObjectCellMember: MyCustomObjectCellMember!
override func awakeFromNib() {
super.awakeFromNib()
println("label1 : \(self.label1.text!)") //displays the value assigned
println("label2 : \(self.label2.text!)") //displays the value assigned
println("pathCellMember: \(self.pathCellMember!)") //displays nil
println("myCustomObjectCellMember.path : \(self.myCustomObjectCellMember.path)") //displays `nil`
}
謝謝
在cellForRowAtIndexPath中,您將在其中重復使用(出隊)每個單元格。 在這里,您需要將vars值分配給每個單元格。 當喚醒確實設置了初始值時,它們只會在單元被重用之前第一次觸發。 在cellForRow或willDisplayCell中分配所有內容(背景顏色等)。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/
討論出於性能原因,表視圖的數據源通常在為其表tableView:cellForRowAtIndexPath:方法中的行分配單元格時應重用UITableViewCell對象。 表視圖維護數據源已標記為可重復使用的UITableViewCell對象的隊列或列表。 當要求為表格視圖提供新的單元格時,請從數據源對象中調用此方法。 如果一個可用的單元格可用,則此方法使該單元出隊,或者使用您先前注冊的類或nib文件創建一個新的單元格。 如果沒有可供重用的單元格,並且您沒有注冊類或nib文件,則此方法返回nil。 如果您為指定的標識符注冊了一個類,並且必須創建一個新的單元格,則此方法通過調用其initWithStyle:reuseIdentifier:方法來初始化該單元格。 對於基於筆尖的單元格,此方法從提供的筆尖文件中加載單元格對象。 如果現有單元可供重用,則此方法改為調用單元的prepareForReuse方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.