SORU
12 ŞUBAT 2012, Pazar


Bir film şeridi içinde, nasıl birden fazla kumanda ile kullanmak için özel bir hücre yapabilirim?

Üzerinde çalıştığım bir uygulama çizimlerini kullanmaya çalışıyorum. App vardırListelerveKullanıcılarve her biri, bir diğerinin toplama (liste üyeleri, listeler bir kullanıcı tarafından sahip olunan) içerir. Yani, buna göre, ListCell UserCell sınıflar var. Amaç bu yeniden kullanılabilir uygulama boyunca (, tableview benim denetleyicileri birinde yani).

Bu bir sorun haline çalıştırıyorum.

Nasıl bir görünüm denetleyicisi yeniden kullanılabilecek film şeridinde özel tableview hücresi oluşturabilirim?

İşte ben şimdiye kadar denedim belirli şeyler.

  • Denetleyicisi #1, prototip bir hücreye eklendi, UİTableViewCell benim alt sınıf, yeniden kimliği ayarla, etiket eklendi ve sınıfın çıkışları onları kablolu ders ayarlayın. Kumanda #2, prototip boş bir hücre eklenir, daha önce olduğu gibi aynı sınıf ve yeniden kimliği olarak ayarlayın. Çalıştırıldığında, etiketler hücreleri Kumanda #2 gösterildiğinde daha hiç gözükmedi. Gayet iyi çalışıyor Denetleyici #1.

  • Farklı bir UÇ her hücre tipi tasarlanmış ve uygun hücre sınıf için ayarlandı. Film şeridi, prototip boş bir hücre eklenir ve sınıf ve yeniden kimlik hücre Dersim başvurmak için ayarlayın. Denetleyicileri' viewDidLoad yöntemleri, yeniden kimliği için bu UÇ dosya kayıtlı. Gösterildiği zaman, hem denetleyicileri hücrelerinin prototip gibi boştu.

  • Her iki denetleyicileri muhafaza prototip ve cep sınıftan sınıfa ve yeniden kimliği boş küme. Hücrelerin kodu tamamen UI. inşa Hücreler tamamen denetleyicileri çalışın.

İkinci durumda prototip her zaman UÇ baskın olduğunu sanıyorum ve eğer prototip hücreler öldürdüm, yeniden kimliği benim UÇ kaydı işe yarar. Ama sonra gerçekten şeritleri kullanarak bütün mesele olan diğer çerçeveler için hücrelerden dedirtiyor kurulum için mümkün olmaz.

Günün sonunda, iki şey istiyorum: film tableview göre akar tel ve yerine kod. görsel olarak hücre düzeni tanımlama Bu şimdiye kadar hem nasıl göremiyorum.

CEVAP
12 ŞUBAT 2012, Pazar


Anladığım kadarıyla.

  1. Birden fazla film şeridinde sahnelerde kullanılabilir olan İB bir hücre tasarımı.
  2. Yapılandırma eşsiz şeridi bu hücreden, hücrenin içinde sahneye bağlı dedirtiyor.

Ne yazık ki, şu anda bunu yapmak için bir yol yoktur. Önceki girişimleri işe yaramadı nedenini anlamak için, daha çizimlerini ve prototip tablo görünümü hücrelerinin nasıl çalıştığı hakkında bilgi sahibi olmanız gerekmektedir. (Eğer umurunda olsaydı zatennedenbu girişimleri de işe yaramadı, şimdi gidebilirsin. Senin için hiçbir sihirli çözümler, bir hata dosya düşündüren daha başka var.)

Bir film şeridi, aslında, çok fazla bir koleksiyon daha .xib dosyaları. Bir tablo kadar yük bir film şeridi bazı prototip hücreler vardır denetleyicisi görüntülemek, burada ne olacağını

  • Her prototip hücre aslında mini-uç kendi gömülü. Tablo görünümü denetleyicisi yükleme bittiğinde, prototip hücre nibs her ile çalışır -[UITableView registerNib:forCellReuseIdentifier:] çağırır.
  • Tablo görünümü hücreler için denetleyici sorar.
  • Muhtemelen -[UITableView dequeueReusableCellWithIdentifier:] Ara
  • Verilen yeniden bir tanımlayıcı ile bir cep istediğinde, bir ucu kayıtlı olup olmadığını kontrol eder. Eğer bunu yaparsa, o hücreden bir örnek oluşturur. Bu aşağıdaki adımlardan oluşur:

    1. Hücrenin uç olarak tanımlanan hücre sınıf bir bak. [[CellClass alloc] initWithCoder:] Ara.
    2. -initWithCoder: yöntemi ile gider ve subviews ve ayarlar ucu olarak tanımlanan özellikler ekler. Bunu test etmedim ama (IBOutlets muhtemelen burada da bağımlısı almak; -awakeFromNib) olabilir
  • Siz nasıl isterseniz cep yapılandırın.

Burada unutulmaması gereken önemli şey arasında bir fark varsınıfhücre vegörünümünühücrenin. Aynı sınıfın iki ayrı prototip hücreler, ama onların subviews tamamen farklı bir şekilde ortaya koydu ile oluşturabilirsiniz. Eğer varsayılan UITableViewCell stilleri kullanırsanız aslında, bu tam olarak ne olduğunu. "Stil ve" Altyazı "tarzı, örneğin, her ikisi de UITableViewCell aynı sınıf tarafından temsil edilir. Varsayılan

Bu çok önemli:sınıfhücrenin bire bir korelasyon belirli bir yokgörünüm hiyerarşisi. Görünüm hiyerarşisine tamamen bu özel kumanda ile kaydedilen prototip hücre içinde ne tarafından belirlenir.

Hücrenin yeniden tanımlayıcı bazı küresel cep dispanser kayıtlı değildi, unutmayın. Yeniden tanımlayıcı sadece UITableView tek bir örnek bağlamında kullanılır.


Bu bilgileri göz önüne alındığında, yukarıda girişimleriniz ne oldu bir bakalım.

Denetleyicisi #1, prototip bir hücreye eklendi, benim için sınıf set UİTableViewCell alt sınıf, yeniden kimliği ayarla, etiket eklendi ve kablolu sınıfın çıkışları onları. Denetleyici #2, boş eklendi prototip hücre, daha önce aynı sınıf ve yeniden kimliği olarak ayarlayın. Ne zaman etiketler hücreler görüldüğü zaman asla görünür çalışır, Kumanda #2. Gayet iyi çalışıyor Denetleyici #1.

Bu bekleniyor. Her iki hücre aynı sınıf varken, #2 Denetleyicisi hücreye geçildi görünüm hiyerarşisi subviews tamamen yoksundur. Prototip koymak yüzden, boş bir hücre var.

Farklı bir UÇ her hücre tipi tasarlanmış ve kablolu uygun hücre sınıf. Film şeridi, boş prototip bir cep eklendi ve benim hücre sınıf başvurmak için sınıf ve yeniden kendi kimliğini ayarlayın. İçinde denetleyicileri' yöntemleri viewDidLoad, bu UÇ dosya kayıtlı yeniden kimliği. Gösterildiği zaman, hem denetleyicileri hücreler boş gibi idi prototip.

Yine, bu bekleniyor. Yeniden tanımlayıcı film şeridi sahneleri veya uçlar arasında paylaştırılmış, bu farklı hücrelerin hepsi aynı yeniden tanımlayıcı vardı aslında anlamsızdı. Bu tableview geri dönmek için hücre şeridi o sahnede prototip hücre eşleşen bir görünüme sahip olacak.

Bu çözüm yakın gerçi. Sizin de belirttiğiniz gibi, sadece programlı -[UITableView registerNib:forCellReuseIdentifier:] hücre içeren UINib geçen çağrı, ve aynı hücreyi geri almak istiyorum. (Bu prototip "" uç; sadece hala ucu film şeridinde gömülü bakıyordu yani tableview ile uç kayıtlı değildi.) geçersiz kılmak için değil Ne yazık ki, bu yaklaşım ile bir kusur var — tek başına bir uç bir hücreye film şeridi dedirtiyor kanca yolu yok.

Her iki denetleyicileri muhafaza prototip ve sınıf ve yeniden kimliği boş küme cep dersime. Hücrelerin kodu tamamen UI. inşa Hücreler mükemmel tüm kontrolörler çalışma.

Doğal olarak. Umarım, bu, şaşırtıcı değildir.


Yani, bu işe yaramadı. Tek başına nibs, hücrelerin tasarım ve birden fazla film şeridinde sahnelerde onları kullanabilirsiniz; sadece şu anda bu hücrelere film şeridi dedirtiyor kanca. Umarım, yine de, bu okuma işlemi sırasında bir şey öğrendim.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • The Platform

    The Platform

    14 HAZİRAN 2006