0

私は4つのViewControllerを持つUITabBarViewControllersを持っています.4つのNavigationControllerがストーリーボードを使用して埋め込まれています。下のスクリーンショットのように、プログラムで作成されたUIViewをアニメーション化する4つのViewControllerすべてに、左ナビゲーション項目としてボタンを配置しています。 enter image description hereuitabbarcontrollerのすべてのView Controllerに共通クラスを使用する方法は?

ここでの問題は、すべての4つのViewControllerで同じコードを記述する必要があることです。今後大きな変更が必要な場合は、すべてのViewControllerでコードを変更する必要があります。私はこの問題を解決する方法を知らないのですか?これに最適な解決策は何ですか?これは実現可能な方法ではありません。そして、私はiOS開発の初心者なので、あなたが説明するときに具体的にしてください。読んでくれてありがとう。

答えて

0

他のすべてのView Controllerによって継承されたBaseViewControllerを作成する必要があります。また、他のすべてのView Controllerで使用できるBaseViewControllerに必要なメソッドを追加できます。

例:

これは他のすべてのクラスのスーパークラスになります。あなたが他のすべてのビューコントローラでMenuBaseViewControllerを継承し、メニューを表示または非表示にshowMenu/hideMenuメソッドを呼び出す必要が同じように

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

これは、実行する方法がわからないことです。 –

+0

編集を参照してください。私はそれをどのように実装することができるかを考えてみました。 –

+0

コードを書いていただきありがとうございます。私はこれをどうやって行うのか考えている。私は前にこれを試してみました。しかし、私が直面した問題は、ViewControllerは共通クラスで作成されたボタンのアクションを実行できませんでした。メニューを表示したり、メニューを隠したりするのは簡単です。しかし、サイドメニューの要素との相互作用は不可能でした。 –

0

SuperCommonVCのような1つのスーパークラスを持ち、すべての4つのコントローラに共通の機能をすべて書き込むことができます。

例:

@interface SuperCommonVC:UIViewController 
{ 
} 
@end 

スーパー共通今、あなただけの

例のように、すべての4つのコントローラ程度SuperCommonVC行う必要があります。VC1

@interface VC1:SuperCommonVC 
{ 
} 
@end 

は、これは単純な継承です。今度は、VC1やその他の機能に、SuperCommonVCのすべての機能を必要に応じて追加することができます。

+0

私はとても混乱しています。それ以前は決してしなかった。それについてチュートリアルを見つけることはできますか? –

+0

オブジェクトオリエンタルプログラミングの基本コンセプトです。たとえば、新しいVCクラスに対して常に 'extend'する' UIViewController 'クラスを調べることができます。ポイントは、あなたのVCクラスはあなたがSuperで定義したすべての機能を持つことです。例えば。 viewWillAppearはあなたのVCのようにスーパーの最初の呼び出します。 – Maulik

+0

次の例を参照してください。http://subjective-objective-c.blogspot.in/2011/08/improved-uiviewcontroller-subclass.html – Maulik

0

私も同じ問題に直面していました。私はいくつかのステップで私の問題を解決しています。

問題を解決するための手順は次のとおりです。

  1. UINavigationController(初期ビューコントローラ)のrootViewController としてのスクリーンショットに示すビュー・コントローラ(左及び正面コントローラを含むビューコントローラ )を作ります。

  2. あなたの4つのビューコントローラは、UIViewControllerでなく、 UINavigationControllerである必要があります。上記の実行後

は、あなたの問題が解決される変更します。

+0

返信いただきありがとうございますが、それは詳しく? 4つのViewControllerすべてに対してNavigationControllerが1つだけ必要だと言っていますか?どのように私はストーリーボードでそれを達成することができますか? 1つのNavigationControllerが1つのViewControllerを埋め込むことができると思います。 –

+0

「UINaviagtionController」のカスタムクラスを1つとります。次に、そのカスタムクラスの左のバーボタンを設定し、これの1つのオブジェクトを作成します(たとえばcustomNav)。次に 'UIViewcontroller'を' rootViewContoller''のcustomNavとして選択します。)このようにして問題が解決されます。 –

+0

これで試してみます。あなたはまた貴族であ​​ることが分かった。私はFBであなたを突き刺しました。 –

関連する問題