SORU
22 ŞUBAT 2012, ÇARŞAMBA


XİBs kullanma zamanı Film Şeridi ve ne zaman kullanılır

İOS projesinde şeritleri kullanma ve XİBs ve kullanmak için herhangi bir talimat var mıdır? her artıları ve eksileri nelerdir ve durumlarla her takım ne?

Görünümü denetleyicileri dinamik UI elemanları tarafından itiliyor varsa film şeridi geçişlerini kullanmak o kadar da temiz değil bildiğim kadarıyla (göster iğne Gibi).

CEVAP
18 EKİM 2013, Cuma


Güncelleme 4/24/2015: İlginçtir ki Apple bile açık kaynaklı son zamanlarda ResearchKit Peter Steinberger has noticed kendi gibi Şeritleri kullanmaz (alt başlık altında"") Interface Builder.

Güncelleme 6/10/2014: Beklendiği gibi, Apple iyileştirilmesi Şeritleri ve böyle büyük mükafat tutar. İOS 7 ve altına uygulanan bazı noktaları iOS 8 artık (ve şimdi özel olarak işaretlenmiştir) geçerli değil. Yani Şeritleri doğal olarak hala kusurları var ise, ben tavsiyemi gözden geçirinkullanmayıniçinmantıklı seçici kullanın.

İOS 7 çıktı bu şimdi, tavsiye ederimkarşıŞeritleri kullanmaya karar verirken dikkatli olun. İşte benim nedenlerim:

  • Film şeritlerini zamanında, derleme zamanı değil başarısız: Geçiş adına bir yazım hatası var ya film şeridi yanlış bağlı? Zamanında darbe olacak. Artık film şeridi yok özel UİViewController bir alt kullanır mısın? Zamanında darbe olacak. Kod içinde böyle şeyler varsa, onları erken yakalamak olacak, derleme zamanı sırasında.Güncelleme: Benim yeni aracıStoryboardLintçoğunlukla bu sorunu çözer.

  • Şeritleri hızlı kafa karıştırıcı: Projeniz büyüdükçe, film şeridi giderek gezinmek için daha zor olur. Ayrıca, eğer birden çok görünümü denetleyicileri birden fazla geçişlerini için birden çok görünüm kontrolörleri, film şeridi hızlı başlar gibi bakmak bir kase spagetti ve bulursun kendini yakınlaştırma ve kaydırma üzerinde yer bulmak görünümü denetleyicisi aradığını ve bulmak ne geçiş noktaları nerede.GüncellemeBu sorun çoğunlukla Film Şeridi this article by Pilky this article by Robert Brown açıklandığı gibi birden fazla Şeritleri, bölme çözülebilir.

  • Şeritleri bir takım olarak daha çok çalışıyoruz: Genellikle tek bir büyük film şeridi projeniz için dosya olduğundan, birden çok geliştiriciler düzenli olarak bir dosyada değişiklik yapmak zorunda bir baş ağrısı olabilir: birleştirilmiş Değişiklikler ve çatışmaların çözülmesi gerekir. Ne zaman bir çatışma oluşur, sabit söyle nasıl çözmek: "Güncellemelerinden oluşturduğu film şeridi XML dosyası değildi gerçekten tasarlanmış golü aklı olan bir insan hiç okuma bırak düzenleme.

  • Şeritleri kod yorumları zor ya da neredeyse imkansız hale getirmektedir: Akran kod yorumları takımda yapacak çok şey vardır. Bir film şeridi değişiklik yaptığınızda, ancak, hemen hemen imkansız farklı bir geliştirici ile bu değişiklikleri gözden geçirmek zorundayız. Yukarı çekebilirsin büyük bir XML dosyası bir fark vardır. Gerçekten ne değişti ve bu değişikliklerin doğru olup olmadığını ya da eğer bir şey kırdı eğer deşifre etmek gerçekten çok zor.

  • Şeritleri kodu yeniden engel: Benim iOS projeleri, genellikle bir sınıf oluşturun içeren tüm renkleri ve yazı tiplerini ve kenar boşlukları ve parçalar kullanıyorum boyunca app vermek için tutarlı bir görünüm ve his: bir tek satır değiştirmek için ayarlamak hiç bu değerleri bütün bir uygulama. Eğer film şeridi gibi değerleri ayarlarsanız, onları çoğaltmak ve onları değiştirmek istediğinizde, her olay bulmak gerekir. Arama şansınız yok çünkü bir bayan, ve film şeritlerini değiştirme ihtimali yüksek.

  • Şeritlerini her şeyi iki kere yapmak: İPhone, iPad ve çalışan evrensel bir uygulama yapıyorsun? Şeritleri kullandığınızda, genellikle iPad versiyonu için bir film şeridi ve iPhone sürümü için bir tane olacak. Senkronize iki tutmak size her UI yapmak gerekir veya uygulama iş akışı iki yerde değiştirin. Yay.GüncellemeVe böyle büyük mükafat iOS 8 iPhone ve iPad için tek bir Şeridi kullanabilirsiniz 6,.

  • Film şeritleri sürekli içerik anahtarları gerektirir: Ve kod çok daha hızlı şeritleri daha kendimi çalışan navigasyon buluyorum. Uygulamanız şeritleri kullanır, sürekli içerik anahtarı: "Oh, bu tablo üzerine dokunun görünümü bir hücre farklı bir görünüm denetleyicisi yüklemek istiyorum. Ben şimdi açık film şeridi, sağ görünümü denetleyicisi, yeni bir geçiş için başka bir görünüm denetleyicisi (ben de var), ver segue adını, unutma sakın (kullanamıyorum sabitler veya değişkenler şeritleri), geçiş yapmak için kod ve umarım sakın yanlış adı o aklıma geldi şimdi benim prepareForSegue yöntemi. Nasıl olduğumu nereden tür kod bu 3 satır burada olmasını isterdim!" Hayır, eğlenceli değil. Kod ve film şeridi (klavye ve fare) arasında geçiş eski hızlı alır ve yavaşlar.

  • Şeritleri yeniden oluşturulması zor: Kodunuzu yeniden ne zaman, film şeridi ne beklediğini hala aynı olduğundan emin olun. Etrafında şeyler film şeridi içinde taşıdığınızda, Eğer hala kod ile çalışma anında göreceksiniz. Eğer senkronize iki dünya tutmak için var gibi bana geliyor. Kırılgan hissediyorum ve benim düşünceme göre değişiklik etmemektedir.

  • Şeritleri aranabilir değil: Güncellemelerinden proje-geniş bir arama şeritleri kullandığınızda. gerçekten proje-geniş bir arama değil Aramaya dahil değildir. Yani kaldırdığınızda bir özel sınıf kodunuzu veya yeniden adlandırmak, sen-ecek var manuel ile film şeridi ya bak onun ham XML emin olmak için üzerinde par ile kodunuzu değiştirir. Efendim, ben bunu sevmiyorum.Güncelleme: Şeritleri Güncellemelerinden 6 aranabilir.

  • Şeritleri daha az esnektirKod, aslında istediğin her şeyi yapabilirsin! Film şeritleri ile kod içinde neler yapabileceğini bir alt kümesi sınırlıdır. Özellikle animasyonlar ile bazı gelişmiş şeyler yapmak istediğinizde ve kendinizi "" iş. almak için film şeridi mücadele bulacaksınız geçişler

  • Şeritlerini özel görünümü denetleyicileri türünü değiştirmesine izin vermeyin: A UICollectionViewController a UITableViewController? değiştirmek istediğiniz Ya da bir düz içine UIViewController? Mümkün olmayan bir film. Eski görünümü denetleyicisi silmek ve yeni bir tane oluşturmak zorunda ve yeniden bağlayın tüm dedirtiyor. Çok daha kolay kodunda böyle bir değişiklik yapmak.

  • Çizimlerini proje için iki ek yükümlülükler ekleyin: (1) film şeridi oluşturduğu Film Şeridi Düzenleyicisi aracı XML ve (2) XML ayrıştırma ve UI ve denetleyici oluşturduğu çalışma zamanı bileşeni nesneleri. Her iki parça da düzeltemezsin hatalar olabilir.

  • Eğer işletim sistemi UIImageView için bir alt görünümünü eklemek için izin yokNeden kim bilir.

  • Şeritleri tek tek Görüntülemek için Otomatik Düzen etkinleştirmek için izin verme(-Kontrol): Kontrol/film şeridinde Otomatik Düzen seçeneği işaretini kaldırarak, değişiklik Şeridi TÜM denetleyicileri için uygulanır. (Sava sayesinde bu noktaya Mazăre!)

  • Şeritleri geriye doğru uyumluluk kırılma riski daha yüksek: Güncellemelerinden bazen Film Şeridi dosya biçimini değiştirir ve bir kaç yıl hatta ay sonra bugün oluşturduğunuz Film Şeridi dosyaları açmak için mümkün olacağını hiçbir şekilde garanti etmez. (Bu nokta için thoughtadvances için teşekkürler. See the original comment)

  • McDonald's var: Steve Jobs' Microsoft ile İlgili Kelimeler: 9**! söylemek

Bu gerçekten şeritleri ile çalışmayı sevmiyorum neden benim nedenleri vardır. Bu nedenlerden bazıları da XİBs için geçerlidir. Üzerinde çalıştığım film şeridi tabanlı projelerde, beni kurtardı oranla çok daha fazla zaman ve durum daha karmaşık yapmışlar yerine daha kolay bir maliyeti var.

Zaman yaratırım benim arayüzü ve uygulama akışı kodu, ben çok daha fazla kontrol ne oluyor, daha kolay hata ayıklama için, bu daha kolay nokta hataları erken, daha kolay açıklamak benim değişiklikler için diğer geliştiriciler ve daha kolay Destek iPhone ve iPad.

Ancak, bu döşeme katılıyorumsizin UIkod her proje için bir tek beden uyan tüm çözüm olmayabilir. Eğer iPad UI büyük ölçüde, belirli yerlerde iPhone UI farklıysa, sense sadece bu alanlar için bir XİB oluşturmak için yapabilirsiniz.

Yukarıda anlatılan sorunları bir sürü Elma ile sabit olabilir ve ne yapacaklarını umarım.

Sadece benim iki sent.

Güncelleme: Güncellemelerinden 5, Apple bir film Şeridi olmayan bir proje oluşturmak için bu seçeneği aldı. Port Güncellemelerinden 5 için 4 şablonları (Film Şeridi-opt-out "seçeneği ile)" Güncellemelerinden küçük bir senaryo yazdım: https://github.com/jfahrenkrug/Xcode4templates

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • RocketJump

    RocketJump

    22 ŞUBAT 2006
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006