2010-03-04 22 views
5

Apple'ın Mail uygulamasını örnek olarak kullanarak; Çekirdek Verileri kullandığını farz et. Bir e-posta hesabına dokunduğunuzda, o hesaptaki tüm iletileri gösterir. Böylece denetleyici, bu hesaptaki tüm iletiler için bir alma isteği yaptı.Temel Veriler Navigasyon iPhone Uygulaması için en iyi uygulamalar sorusu

Ardından, bir iletiye dokunup bir seviye daha derinlemesine incelersiniz, şimdi tek bir iletiyi görüntülüyorsunuz. Bu tek mesaj muhtemelen mesaj listesi denetleyicisinden geçirildi, ancak aynı e-posta hesabındaki tüm iletiler arasında hareket etmek için sağ üstteki üçgenleri de tıklayabilirsiniz. Bu, tek bir e-posta mesajını görüntülemek için kontrolörün aynı mesaj listesine de ihtiyacı olduğu anlamına gelir.

Böylece, getirme isteği mantığını liste görünümünden kesebilir ve yapıştırabilirsiniz, ancak bu DRY/tekrarlama-kendiniz değil.

Bu sorunu çözmek için en iyi uygulama önerileri nelerdir?

cevap

2

Bu sorunu çözmek için kullandığım çözüm delege tasarım desenini kullanmaktır. Yani, bir rootViewController ve bir detailViewController ile bir uygulamada, rootViewController, detailViewController için bir temsilci olarak davranır. Örneğin, kullanıcı bir e-posta iletisini görüntülerken (ayrıntı görünümünde) ve yeni bir iletiyi yinelemek için bir düğmeyi tıklattığında, detailViewController rootViewController'ın rootViewController'ın gereksinim duyduğu bir temsilci yöntemi aracılığıyla bilgilendirir. yeni bir mesaj görüntülemek için

Bu yolla, detailViewController yalnızca bir model nesnesine (görüntülenen e-posta) ilişkin bilgileri bilmek zorundadır. RootViewController, nesnelerin kalanını içeren etkileşimi işlerken.

Bana göre, bu iyi bir sorumluluk bölümüydü, bu yüzden kullandığım çözüm budur.

2

İletilerinizi yönetmek için bir nesne oluşturun, daha sonra, görüntü denetleyicileriniz için gereken iletileri almak için bu nesneyle etkileşime geçin. Bu, daha sonra karar verdiyseniz, ViewData denetleyicinizin mantığını değiştirmeden CoreData'dan geçiş yapmanızı sağlar.

+0

Öneriler için çok teşekkürler Jesse. Üzerinde çalıştığım uygulama için, bu biraz overkill olurdu, bu yüzden göreceli bir basit uygulama olduğunu, bu yüzden şablon kod mümkün olduğunca çok tutmak istiyorum. Ancak çözümünüz, daha karmaşık bir uygulama için çok yardımcı olacağı gibi geliyor. – robenk

İlgili konular