Storyboard'u kullanarak gömülü 4 NavigationController ile 4 ViewControllers sahip bir UITabBarViewControllers sahibim. Aşağıdaki ekran görüntüsünde olduğu gibi programlı olarak yaratılan UIView'i canlandıracak olan tüm ViewControllers'larda sol gezinti düğmesi olarak butona basıyorum. Buradaki sorun şu ki, 4 ViewControllers'ın hepsinde aynı kodu yazmak zorunda kaldım. Ve gelecekte büyük değişiklikler yapmam gerekirse, tüm ViewControllers'larda kodu değiştirmem gerekecek. Bu sorunu nasıl çözeceğimi bilmiyorum? Bunun için en iyi çözüm hangisidir. Bu kod için uygun bir yol değil. Ve iOS geliştirme konusunda yeniyim, bu yüzden açıkladığınızda spesifik olun. Okuduğunuz için teşekkürler.Uitabbar denetleyicisinin tüm görünüm denetleyicileri için ortak sınıf nasıl kullanılır?
cevap
Diğer tüm görüntü denetleyicileri tarafından devralınan bir BaseViewController oluşturmanız gerekir. Ve tüm diğer görüntü denetleyicilerinde mevcut olacak BaseViewController'da gerekli yöntemleri ekleyebilirsiniz.
Ör.
Bu, diğer tüm sınıfların bir süper sınıfı olacak. Diğer tüm görünümü kumandam MenuBaseViewController devralır ve göstermek veya gizlemek menüsü için showMenu/hideMenu yöntemini çağırmanız gerekir Aynı şekilde
MenuBaseViewController.h
————————————————————————————
@interface MenuBaseViewController : UIViewController
//declare properties and methods here
- (void)showMenu;
- (void)hideMenu;
@end
MenuBaseViewController.m
————————————————————————————
@implementation MenuBaseViewController
//implement methods here
- (void)showMenu {
//logic for showing menu
//probably you need to set rootViewController what is selected.
//You can create method for setting root view controller in AppDelegate
}
- (void)hideMenu {
//logic for hiding menu
}
@end
OneViewController.h
————————————————————————————
@interface OneViewController : MenuBaseViewControlle
//declare properties and methods here
@end
OneViewController.m
————————————————————————————
@implementation MenuBaseViewController
//implement methods here
//you can call showMenu, hideMenu to show/hide menu
@end
.
SuperCommonVC
gibi bir süper sınıfa sahip olabilirsiniz ve tüm 4 denetleyicinizin sahip olacağı tüm ortak işlevler yazabilirsiniz.
Ör: VC1
@interface VC1:SuperCommonVC
{
}
@end
Bu sadece basit bir miras olduğunu: Süper ortak
@interface SuperCommonVC:UIViewController
{
}
@end
Şimdi sadece
Ex gibi tüm 4 kontrolörleri ölçüde SuperCommonVC
gerekir. Artık, SuperCommonVC'nin VC1'inize ve diğerlerine istediğiniz kadar işlevselliği olabilir.
Kafam çok karıştı. Bunu daha önce yapmadım. Bunun için öğretici bulabilir miyim? –
Bu Nesne Oryantal Programlama temel bir kavramdır. Örneğin, yeni VC sınıfınıza her zaman 'uzandığınız' UIViewController 'sınıfına bakabilirsiniz. Önemli olan, VC sınıfınızın Super'da tanımladığınız tüm işlevlere sahip olmasıdır. Örneğin. viewWillAppear, VC'nizden ilk olarak Super'ı arayacak. – Maulik
bu örneğe bakın: http: //subjective-objective-c.blogspot.in/2011/08/improved-uiviewcontroller-subclass.html – Maulik
Aynı konuyla da karşı karşıya kaldım. Sorunumu bazı adımlarla çözdüm.
Size sorunu çözmek için gereken adımlar.
ana
UINavigationController
(ilk görünüşüdür kontrol) arasındarootViewController
olarak ekran gösterilen daki görünümü denetleyicisi (sol ve önden görünüşüdür kumandayı içeren görünüşüdür kontrol gibi).4 denetleyiciniz,
UINavigationController
olmalıdır.
Yukarıdaki değişiklikleri gerçekleştirdikten sonra, sorununuz çözülecektir.
Cevabınız için teşekkür ederiz, ancak nasıl yapacağınızı açıkladıysanız daha yararlı olur Bu ayrıntılı olarak? Tüm 4 ViewControllers için sadece bir NavigationController'a ihtiyacım olduğunu mu söylüyorsunuz? Ve bunu storyboard'da nasıl başarabilirim? Sanırım bir NavigationController sadece bir ViewController gömebilir –
Özel bir UINaviagtionController sınıfı alın. Ardından bu özel sınıftaki sol çubuk düğmesini ayarlayın ve bunun bir nesnesini (customNav olarak belirtin) ayarlayın. Sonra “UIViewcontroller” öğesini “rootViewContoller” (customNav) olarak ayarlayın. Bu şekilde probleminiz çözülecektir. –
Tamam, bunu deneyeceğim. Btw Sen de bir Gujju olduğunu buldum. Seni FB'de dürttüm. –
- 1. Modal Görünüm Denetleyicisinin Arkasındaki Görünüm Denetleyicilerini Değiştirme
- 2. Tablo Görünümü Denetleyicisinin türünü düzenli bir Görünüm Denetleyicisine nasıl değiştirebilirim?
- 3. Uygulamadaki tüm denetleyicileri bulma
- 4. AngularJS denetleyicileri: Dosyayı ayırmak için ortak kodu taşıyın
- 5. Gömülü UITabBar alt görünümleri için farklı UINavigationController başlıkları mı ayarlıyorsunuz?
- 6. Görünüm denetleyicide ortak kod nereye koyulur?
- 7. iOS ikili görünüm denetleyicileri bir sayfada birlikte ilerlerler
- 8. Tüm denetleyicileri ve eşlemeleri bir görünümde nasıl gösterilir
- 9. Android'de Tüm Etkinlikler için Ortak Tıklanabilir Başlık
- 10. MapReduce'da sqoop oluşturulan sınıf nasıl kullanılır?
- 11. Net :: SSH :: Perl, ortak anahtarlarla nasıl kullanılır?
- 12. JPA, Farklı sınıfları eşlemek için aynı sınıf (varlık) nasıl kullanılır?
- 13. Bir kapsayıcı görünüm denetleyicisinin içine yerleştirilmiş bir UINavigationController bir UITabBarController
- 14. Ortak etiketle başlayan tüm sütunları nasıl seçeceksiniz
- 15. Bir görünüm denetleyicisinde sunulan tüm görünümleri bilir
- 16. Tek bir angularjs dosyasından tüm denetleyicileri çağırmak
- 17. Alttan görünüm denetleyicisi olarak eklenen bir gezinme denetleyicisinin çerçevesini ayarlama
- 18. ControllerName'i geçirerek MVC Denetleyicisinin tüm eylemlerinin listesini nasıl alabilirim?
- 19. UITabbar yönlendirme sorunu
- 20. Görüntü denetleyicisini itilen görüntü denetleyicisinin altından nasıl açarım?
- 21. Ortak kullanıcı ilerleme güncelleştirmesi, çoklu kullanıcı ortamına nasıl kullanılır?
- 22. UITabBar - setItems: canlandırılmış: Crashes
- 23. Django - - Sınıf Tabanlı Jenerik Görünüm
- 24. iPhone Gezinme işlevinde Parent View denetleyicisinin sınıf adını al
- 25. "Splitview denetleyicisinin kullanılmadan önce 0 dizininde bir görünüm denetleyicisine sahip olması bekleniyor" hatası.
- 26. Çalışma zamanında görünüm eklemek için layoutinflator nasıl kullanılır?
- 27. UITabBar genişliği, ekran boyutu
- 28. Minitest ile denetleyicileri sınama
- 29. Denetleyicileri bildirmek için Açısal Düzenleme
- 30. NUnit sınıf kitaplığıyla tümleştirme testleri için kullanılır
Nasıl yapılacağını bilmediğim şey bu. –
Düzenleme konusuna bakın .. Bunu nasıl uygulayabileceğimize dair bir fikir vermeye çalıştım. –
Kod yazarken rahatsız olduğunuz için teşekkür ederiz. Bunu nasıl yapacağımı anladım. Bunu daha önce denedim bile. Ancak karşılaştığım sorun, ViewController ortak sınıfta oluşturulan herhangi bir düğmenin eylemini gerçekleştiremedi. Menüyü göstermek, menüyü gizlemek kolaydır.Ancak yan menüdeki öğelerle etkileşim mümkün değildi. –