![](/img/trans.png)
[英]Nil outlets with tableview dequeueReusableCellWithIdentifier
[英]Is a UITableViewCell and its outlets initialized after `dequeueReusableCellWithIdentifier`?
使用dequeueReusableCellWithIdentifier
實例化自定義UITableViewCell
的出口后,是否可以保存訪問它?
例如
class MyCell: UITableViewCell {
@IBOutlet weak var myImageView: UIImageView!
var image: UIImage?
override func awakeFromNib() {
update()
}
func update() {
myImageView.image = image
}
}
class MyViewController: UIView() {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier") as! MyCell
cell.image = UIImage(...)
cell.update()
}
}
我已經使用了很多這種實現,但是很少(<0.001%)我收到崩潰報告,指向myImageView.image = image
。
更新:到目前為止,僅在一種特定的實現中觀察到了崩潰,其中一個插座鏈接到自定義單元格中的許多UIImageView()
,因為它們共享同一類。
簡單的方法dequeueReusableCellWithIdentifier:
返回一個不安全的可選方法。
請改用此方法,因為它返回一個非可選單元格,因此是安全的
let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier",
forIndexPath: indexPath) as! MyCell
由於UIImageView
對象的image
屬性可以為nil
因此建議將相關的UIImage
屬性聲明為可選( ?
),而不是在沒有默認初始值設定項( ()
)的情況下隱式展開的可選( !
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.