2012-11-26 16 views
5

Yeniden bir UITableViewCell numaralı arabelleği yeniden = nil bir ivar ile sabit tutuyor ve bu örneği belirli bir satır için döndürüp bu satırı özellikle [tableView reloadRowsAtIndexPaths:withRowAnimation:] kullanarak yeniden yüklerseniz, satır içeriği kayboluyor (veya bazen titreşiyor). Uzaklaşıp geri döndüğümde tekrar görünür hale gelir. Diğer taraftan [tableView reloadData] yaparsam kaybolmaz.Niçin yeniden kullanımda el ile yeniden UITableViewCell kayboluyor?

  • Satırı yeniden yüklediğimde neden kayboluyor?
  • Tüm tabloyu yeniden yüklediğimde neden çalışmıyor? İşte

örnek bir projedir: https://github.com/hannesoid/HOTableViewTests

el (dışarı reuseidentifier & dequeueing ile) şekilde bir UITableViewCell yeniden tipik tavsiye edilmez iOS 6. bildiğim bu test ancak Bazı oldukça durağan senaryolarda, işleri basitleştirir.

cevap

1

UITableView, Apple tarafından en iyi duruma getirilmiştir; böylece, çok az miktarda bellek kullanır ve yine de hücrelerin ekranda göründüğü zaman için iyi bir performansa sahiptir. Böyle standart olmayan bir şey yaptığınızda ve optimizasyonu atladığınızda, tüm makineyi patlatırsınız. İşte önerim. Şu anda bir örnek değişkeni olarak tuttuğunuz belirli bir satırınız varsa, neden yeniden kullanıcı için benzersiz bir ad vermeyi denemiyorsunuz? Kitin çalışmasına izin verin.

0

reuseIdentifier'u nil'a eşit yapmak iyi bir uygulama değildir. Her zaman bir dize/adla reuseIdentifier'u başlat. cellForRowAtIndexPath, satırları reuseIdentifiers'a bakarak yeniden yükler. Önbelleğe alınmış hücreler, mevcut bir reuseIdentifier ile bulunursa, bu hücreleri, yeni bir tanıtma ve başlatmadan doğrudan görüntüler. nil yapmak sorun yaratır. Yani, [email protected]"cell" veya hoşunuza giden bir şey yapın. Bu sorununu çözecektir.

İlgili konular