2016-03-30 16 views
0

doğru dequeueReusableCellWithIdentifier ile başlatmasını sonra özel bir UITableViewCell bir çıkış erişmek için kaydetmek mi?bir UITableViewCell ve çıkışları `dequeueReusableCellWithIdentifier` sonra başlatıldı mı?

E.g.

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() 
    } 
} 

Ben bu uygulama çok kullandık ama çok nadiren (< 0.001%) Ben myImageView.image = image hattı işaret eden bir çarpışma rapor al.

GÜNCELLEME: Şimdiye kadar çöker sadece aynı sınıfa paylaştığı için 1 çıkış, özel hücrelerde birçok UIImageView() bağlantılıdır belirli bir uygulama için gözlenmiştir.

cevap

2

güvenli olmadığı, isteğe bağlı bir döner dequeueReusableCellWithIdentifier: basit bir yöntem.

kullanımı daha çok bir UIImageView nesnenin image özelliği nil olabilir beri (?) isteğe bağlı olarak, ilgili UIImage özelliklerini bildirmek için tavsiye

let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier", 
      forIndexPath: indexPath) as! MyCell 

bir isteğe bağlı olmayan hücreye verdiği için güvenlidir yerine, bu yöntem, varsayılan başlatıcısı olmadan örtülü Çizelgesi İsteğe bağlı (!) den (())

+0

sayesinde bu işaret için, kodu güncelleyecek. o hücre için nil döndürür ancak sonra ben kazasında hattında 'yerine' myImageView.image = image' arasında 'cell.image = UIImage (...) olacağını düşünüyorum. – Manuel

+0

Benim kötü, özellik isteğe bağlı olarak bildirildi, yazım hatası düzeltildi. – Manuel

İlgili konular