2012-06-09 13 views
12

Dinamik hücrelerin yanı sıra birkaç statik hücrenin nasıl olacağını anlamaya çalışıyorum (sanırım) ama yeni bir Master-Detail uygulaması başlattığımda ve varsayılan Dinamik Prototipleri değiştirdiğimde Statik Hücreler, çöküyor.karışıklık

Sanırım, bu konuda hala yeniyim, tüm bileşenlerin (tablo görüntüleme, hücre, delegeler) nasıl kablolu olduğunu anlamıyorum. Statik Hücrelere geçtikten sonra üç hücre yaptım ama ortaya çıkmıyorlar. Uygulama sadece çöker.

Kod ekleyebilirim ancak temel olarak yeni bir Ana-Detay oluştur, Statik Hücreler'e geç, üç hücrenin adını değiştir ve çöküyor (ana döngüde).

Her şey için şimdiden teşekkürler.

+0

Yığın izini paylaşabilir misiniz? – sosborn

cevap

45

Sorunuzu anladıysam, bu Aradığınız açıklaması:

Prototip (tekrar kullanılabilirlik): Eğer Dinamik hücreleri kullandığınızda

, sen Prototip hücrelerini kullanmak. Bu, IB'de veya kodunuzda, bir UITableViewCell örneğini oluşturursunuz ve ona bir tanımlayıcı (reuseIdentifier) verin. UITableView, ihtiyacınız olan sayıda hücre (satır) oluşturmak için bu prototipini kullanır. UITableView, ekranı doldurması gereken çok sayıda hücre için (ve bellek kullan) oluşturur. bu hücrelerden bazılarını ekranın dışına gitmek kez UITableView yeniden kullanır onları - onları geri dönüştürür.

Bir UITableView birden bir prototip hücresini tanımlayabiliriz. Fikir, her prototipin farklı bir amaca hizmet etmesidir. Örneğin, yalnızca bir büyük UILabel olan bir prototip hücresi tanımlarsınız ve amacı statik metin kullanmaktır. Yalnızca bir tane UIImageView olan başka bir prototip tanımlarsınız. Tasarımınıza ve verilerinizi nasıl görüntülemek istediğinize bağlıdır.

IB, sen Dinamik prototipleri hücreleri kullanın prototip hücrelerini kullanır ve bir identifier ayarlayın.

– tableView:numberOfRowsInSection: 
– tableView:cellForRowAtIndexPath: 

Bu yöntemler UITableView temsilci yöntemleri şunlardır: Sonra gibi UITableViewDataSource yöntemleri uygulamak zorunda.

IB kullanarak Değilse, – tableView:cellForRowAtIndexPath: yönteminde hücreleri yaratacak:

UITableViewCell * hücre = [[UITableViewCell alloc] initWithStyle: (UITableViewCellStyle) tarzı reuseIdentifier: (NSString *) reuseIdentifier]; Statik

:

statik hücrelerin fikri sadece basit olmasıdır. Prototip hücrelerini (örneğin, sadece bir prototip) kullanabilir ve örneğin bir veri kaynağı olarak statik NSArray'da besleyebilirsiniz. Apple, UITableViewDataSource yöntemlerini uygulama görevini üstlenmek için, yalnızca storyboard'u ve IB'yi kullanacağınız statik hücreleri tanıttı. IB'de tablo görünümünü seçersiniz ve bunun yerine Statik Hücreler'u seçip metninizi yazın veya resmi ayarlayın. Statik hücrelere herhangi bir dinamik değişiklik yapmak istemiyorsunuz, çünkü bu uygulama, uygulama yapılmadığı için çalışıyor ve buna değmeyecek pek çok yöntem uygulamak zorunda kalacaksınız. Bu, seçilen satırın indexPath elde etmek için bir çalışma değil, ama bir statik hücre seçiminden yeni bir görünüm itmek gerekirse, bir fikir yerine, herhangi bir kod yerine, istekliler kullanırsınız.

Statik hücreleri kullanırken, prototip hücreleri kullanırken UITableViewDataSource yöntemlerini (gerekli olanlar) uygulamıyorsanız, uygulamanız çöküyorsa UITableViewDataSource yöntemini uygulamamalısınız, aksi halde uygulamanız çöküyor ve tersi.

+0

Ben bunu bir ince çizgi tarak ile gideceğim (bunu bunun için yazdın mı yoksa başka bir yerde mi buldunuz?) Ama UITableViewDataSource yöntemlerinden kurtulmak hile yaptı ("numberOfRowsInSection" eklemek zorunda kaldı. –

+2

Daha fazla kapsamlı açıklama bulabilirsin ama iyi şanslar! – Canopus

+0

Tüm bunlardan öğrendiğim güzel bir şey, Sınıf Başvurusu (Organizatör - Dokümantasyon) 'da kapsamlı bir dokümantasyon olmasıdır. –