簡體   English   中英

UITableViewCell插座

[英]UITableViewCell outlets

插座何時綁定到UITableViewCell實例? 如果我在調試器中打印myLabel,它將為nil並打印:

fatal error: unexpectedly found nil while unwrapping an Optional value

class MyTableViewCell: UITableViewCell {
   @IBOutlet var myLabel: UILabel!

 override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
  super.init(style: style, reuseIdentifier: reuseIdentifier)
 }

 required init?(coder aDecoder: NSCoder) {
   super.init(coder: aDecoder)

   print("\(myLabel)")
 }
}

調用表視圖單元格的init方法時,尚未設置插座!

我不確定您的意圖是什么:

  1. 如果要確保您沒有解開nil可選值,請使用if let如下所示:

     if let label = myLabel { print("\\(label)") } 
  2. 如果要設置tableView的單元格,則應首先通過調用tableView.registerNib(UINib(nibName: "MyTableViewCell", bundle: nil), forCellReuseIdentifier: "reuse")注冊該單元格。 然后使用tableView.dequeueReusableCellWithIdentifier("reuse")使cellForRowAtIndexPath的單元出隊,並確保在awakeFromNib設置單元的值:

     override func awakeFromNib() { super.awakeFromNib() //you can be sure that myLabel is initialzed here print("\\(myLabel)") } 

如果您要從主故事板上連接插座,則意外刪除插座可能會引起問題。 重新創建出口,標簽將不再為零。

問題是您遇到myLabel為nil的情況。 可能是在回收表視圖單元格的同時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM