2016-03-29 32 views
0

Çıkışlar UITableViewCell örneğine ne zaman bağlanır? Ben ayıklayıcısında mylabel baskı varsa, nil olduğunu ve baskılar:UITableViewCell çıkışları

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)") 
} 
} 
+0

'@IBOutlet zayıf var deneyin myLabel: UILabel! ' – boidkan

+1

' awakeFromNib' bağlanınca çağrılacaklar – dan

+0

Anlayışım @IBOutlet'in örtülü olarak zayıf olduğu. – user3246173

cevap

2

Tablo görünüm hücrenizin init yöntemi çağrıldığında çıkışlar henüz belirlenmedi!

niyetinin ne olduğundan emin değilim:

if let label = myLabel { 
    print("\(label)") 
} 
  • ise: Eğer sadece bu gibi if let kullanmak bir sıfır opsiyonel değer unwrapping olmadığından emin olmak için

    1. tablonuzun hücresini kurmak istiyorsanız, önce tableView.registerNib(UINib(nibName: "MyTableViewCell", bundle: nil), forCellReuseIdentifier: "reuse") numaralı telefonu arayarak hücreyi kaydetmelisiniz. Sonra tableView.dequeueReusableCellWithIdentifier("reuse") kullanarak cellForRowAtIndexPath hücreyi sıradan çıkarma ve awakeFromNib da hücrenin değerlerini ayarlamak emin olun: çıkış olsaydı

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

    Sorun, myLabel nil bir kasanın içine çalışan olmasıdır. Tablo görünümü hücresi geri dönüştürülürken olabilir.

    +0

    Alt görünümler, -prepareForReuse içinde açıkça yapılmadığı sürece yeniden kullanım sırasında yok edilir. Geri dönüşüm noktası, ilk önce bu yükü kaldırmaktır. Arabirim oluşturucusundan eklenen tüm elemanlar -awakeFromNib çağrılır ve çağrılana kadar veya açık olarak kaldırılana veya hücre serbest bırakılıncaya kadar kullanılabilir olmaya devam eder. -dequeueReusableCellWithIdentifier ya yeni bir hücreyi başlatacak ya da varolan bir hücreyi tüm storyboard altyazıları ile birlikte sağlamlaştıracaktır. – Dare

    0

    Main Storyboard bir çıkış bağlıyorsanız, senin sorunun ortaya çıkabilecek yanlışlıkla silindi. Çıkışını yeniden oluştur ve etiket artık sıfır olmayacak.