0

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

0

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 

.

+0

Nasıl yapılacağını bilmediğim şey bu. –

+0

Düzenleme konusuna bakın .. Bunu nasıl uygulayabileceğimize dair bir fikir vermeye çalıştım. –

+0

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. –

0

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.

+0

Kafam çok karıştı. Bunu daha önce yapmadım. Bunun için öğretici bulabilir miyim? –

+0

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

+0

bu örneğe bakın: http: //subjective-objective-c.blogspot.in/2011/08/improved-uiviewcontroller-subclass.html – Maulik

0

Aynı konuyla da karşı karşıya kaldım. Sorunumu bazı adımlarla çözdüm.

Size sorunu çözmek için gereken adımlar.

  1. ana UINavigationController (ilk görünüşüdür kontrol) arasında rootViewController 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).

  2. 4 denetleyiciniz, UINavigationController olmalıdır.

Yukarıdaki değişiklikleri gerçekleştirdikten sonra, sorununuz çözülecektir.

+0

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 –

+0

Ö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. –

+0

Tamam, bunu deneyeceğim. Btw Sen de bir Gujju olduğunu buldum. Seni FB'de dürttüm. –

İlgili konular