SORU
6 ŞUBAT 2010, CUMARTESİ


UİTableView esnek/dinamik heightForRowAtİndexPath

Durumda

Normalde cep Kur cellForRowAtIndexPath temsilci yöntemi kullanırsınız. Bilgileri hücre kümesi hücre nasıl çekilir ve boyutu ne olacak için önemlidir.

Ne yazık ki heightForRowAtIndexPath temsilci yöntemi çağrılır önce cellForRowAtIndexPath temsilci yöntem o kadar veremeyiz sadece söyle temsilci dönmek yüksekliğinin hücre beri bu olacak sıfır o zaman.

Hücre tablo çizilir önce boyutunu hesaplamak gerekiyor. Neyse ki sadece bir yöntem yoktur, sizeWithFont, NSString sınıfına ait. Ancak dinamik olarak hücre elemanlarını nasıl verileceğini bilmek gerekir doğru boyutunu hesaplamak için sorun yoktur. Bir örnekte bu açıkça ifade edeceğim

Bir etiket textLabel adında içeren UITableViewCell, düşünün. cellForRowAtIndexPath temsilci yöntemi içinde temelde belirli bir genişlikte metin mevcut ihtiyacı olduğu kadar satır olabilir etiketi söyler textLabel.numberOfLines = 0, yerleştiriyoruz. Sorun olursa textLabel bir metin daha verirsek o zaman genişliği başlangıçta verilen textLabel oluşur. İkinci çizgi görünür, ama hücrenin yüksekliğini otomatik olarak ayarlanacak ve berbat görünümlü tablo bir görüşe sahip oluyoruz.

Daha önce, sizeWithFont yüksekliğini hesaplamak için kullanabiliriz, ama genişliği, vb için kullanılan bilmek gerekiyor " dedi. Basitlik nedeniyle, biz sadece genişlik değer veriyorsan, genişliği 320.0 etrafında (dikkate alarak doldurma değil) olacağını koda ihtiyacımız olabilir. Ama eğer genişliği sonra 300.0 ve hücrenin etrafında olurdu düz yerine UİTableViewStyleGrouped kullansak ne olur yine berbat olurdu. Ya eğer portreden manzaraya takas olur, çok daha geniş bir alan var, Henüz 300.0 biz kodlanmış bir yana da ne olacak.

Bu noktada kendinizi hardcoding önlemek için ne kadar soru sorman gereken durumdur.

Kendi Düşüncelerimi

Bazı bölüm ve bir satır için bir hücreyi almak için UİTableView bir sınıfa ait olduğunu cellForRowAtIndexPath yöntem diyebiliriz. Bunu yapmak istemediğini söyledi mesajların bir çift okudum, ama gerçekten anlamıyorum. Evet, zaten hücre ayıracağını katılıyorum ama heightForRowAtIndexPath temsilci yöntemi tek hücreli zaten ayrılacak kadar görülebilir Hücre denir. Eğer düzgün hücre cellForRowAtIndexPath yöntemi olarak tahsis edilecektir. dequeueReusableCellWithIdentifier kullanıyorsanız, yerine bir işaretçi kullanılır ve özellikleri sadece ayarlanır. Sorun ne o zaman?

Not hücre DEĞİL çizilmiş içinde cellForRowAtIndexPath temsilci yöntemi, zaman tablosunu görüntülemek hücre görülür hale geliyor senaryoyu arayın setNeedDisplay yöntemi UİTableVieCell tetikler drawRect yöntem çizmek için hücre. Yani doğrudan cellForRowAtIndexPath temsilci arıyor iki kez çekilmiş olmalı çünkü performans kaybetmez.

Tamam mı heightForRowAtIndexPath temsilci yöntemi içinde cellForRowAtIndexPath temsilci yöntemini çağırarak tüm bilgileri hücre hakkında gerek boyut belirlemek için elimize.

Belki de Eğer hücre Değer1 tarzda ne varsa, tüm seçenekleri, akan sizeForCell kendi yöntemi veya Değer2, vb oluşturabilirsiniz.

Sonuç/Soru

Sadece düşüncelerimi açıklanan bir teori, eğer yazdıklarımı doğru olup olmadığını bilmek istiyorum. Ya da belki aynı şeyi yapmak için başka bir yol olduğunu. İşleri mümkün olduğu kadar esnek yapmak istiyorum unutmayın.

CEVAP
12 Temmuz 2011, Salı


Evet, zaten hücre ayıracağını katılıyorum ama heightForRowAtİndexPath temsilci yöntemi tek hücreli zaten ayrılacak kadar görülebilir Hücre denir.

Bu yanlıştır. Tablo görünümü heightForRowAtIndexPath uygulamaya ise tablodaki satır görünümü, yalnızca olanları gösteriliyor aramak gerekiyor. Nedeni toplam yüksekliği doğru kaydırma göstergeleri görüntülemek için anlamaya ihtiyacı var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • thenewboston

    thenewboston

    4 ŞUBAT 2008