5

Uygulamamda, birden çok bölüm içeren Kart/Kılavuz Düzenine sahip bir giriş sayfam var. UICollectionView Yani burada bariz bir seçimdir. Ancak bu kartlar tasarım, yükleme verileri ve bunların işlevselliği konusunda çok farklı. Bütün bunları tek bir kontrolöre koymak, hantal, karmaşık ve bakımı zor olacaktır. Bu yüzden bunları kendi UIViewControllers'a ayırmamız gerektiğini düşündük. Her bir kartın bir türünü kullanır ve bir kart içinde gösterilmek üzere contentSize değerini hesaplar. Ana ana sayfa denetleyicimiz, yalnızca UICollectionView hücrelerine bu viewcontroller görünümlerini eklemekle sorumludur. collectionViewCell ve veri içinde bir CollectionView UICiewcontrollers'ı UICollectionviewCells içine gömme

  • Her bir görünümü vardır

    özetler için,

    • bir HomeViewController kendi kontrol Sınıfı tarafından korunur. kumandanın
    • tüm örnekleri viewControllers, (CollectionView'ın düzeni için öğe boyutu olarak kullanılır) contentSize hesaplama beri kendimizi yapılır bütün çocuklara added as its children .- Apple Guide
    • The appearance call s HomeViewController içindedir ve Denetleyici görünümlerinin yüklenecek görünümü ve ayarlanacak veriye ihtiyacı vardır.

    Sorum şu, bu tasarım seçimi doğru mu? Ya da böyle bir ekranı uygulamak için hangi yaklaşımı seçtin? Çok fazla viewControllers yarattığımızdan (her hücre için bir tane), bu bellek veya performansı etkiler mi? Ve eğer sadece bazı viewControllers'ları önbelleğe almak veya bunları kullanıcı scroll'ları olarak veya collectionView hücresine eklemenin zamanı olarak yüklemek istersem, o hücreye ait veriyi ve verilere bağlı olarak görüntülemenin büyüklüğünü hesaplamak için bunu nasıl yaparım? CollectionView düzeni dışında.

  • cevap

    1

    Bence yaklaşımınız geçerli ve teorik bir bakış açısından, verileri bir görünümden ayırmak mantıklı. Ancak, bu durumda UICollectionViewCell alt sınıfının temel olarak bir viewController işlevi gören kendi verilerini gerçekleştirmesini tercih ederim. Bu, eklenen viewControllers'a ve bunlarla birlikte gelen kodlara ihtiyacınız olmadığından kodunuzu biraz basitleştirecektir; bunun yerine, tablonuzu ekranın hücresine ekleyebilirsiniz. Bu benim için daha doğal görünüyor, o zaman HomeViewController koleksiyonunun görünümü olabilir Hücreler kapalı ve açık ve yükleme işlemi sırasında taşındığında kendi temsilci çağrı otomatik olarak ele. Hücrelerin kim olduklarına veya ne zaman yüklenmesi gerektiğine dair mesaj göndermeniz gerekmeyecek, bu otomatik olarak sizin için halledilecektir. Ayrıca, her hücrede görünüm yaşam döngüsü yöntemlerinin değerli olduğunu ve bir hücre yükünün ve koleksiyonun bir parçası olarak yenilenmekten daha az sezgisel olduğunu düşünmüyorum. Her iki şekilde çalışır, iyi şanslar!

    +0

    Tam olarak ne zaman söylediğimi anlıyorum. Tasarım t dediğimde çok açık olmasaydım, yükleme verileri karttan karta çok değişir. Bir kartın içinde bir tableView veya başka bir collectionView veya bazı karmaşık görünümler bile olabilir. Bu tableView delegeleri veya bu görünümlerdeki diğer Görünümler gibi. Bu yüzden, bana bir UIViewController tanımı gibi görünen bir "bir görünümü ve verilerini işleyen bir Nesne" ye ihtiyacım olacak. Bu yüzden bir viewcontroller kullanmaya karar verdim. – akshaynhegde

    +0

    Ve bir bölüm için bir viewcontroller kullanma hakkında, farklı bölümlerde yine benzer kartlar olabilir, bu yüzden her bölümün içinde ne tür kartlar bulunabilir, veriyi sunucudan aldığıma kadar tanımlanamaz. Bu bilgiler (kartın türü, verileri veya nasıl görünmesi gerektiği) sunucu tarafında tanımlanmıştır. Bu yüzden, her tür kartın nasıl işleneceğini bilmesi gereken bir kontrol cihazı oluşturacağım. – akshaynhegde

    +0

    Şimdi aynı sorunla karşı karşıyayım, yaptığım Görünüm Denetleyicinin görünümü ekran görüntüsünü almak önbellekte kaydetmek ve UICollectioVIewCell'de bu ekran görüntüsünü kullanmak her şey ilk kez bir dalgalı kaydırma hariç, Görünümü oluşturduğu ve aldığı için Hücre ilk kez yüklendiğinde ekran görüntüsü. – Koushik