2011-01-04 16 views
1

ボタンをナビゲーションコントローラに直接追加することは可能でしょうか、またはすべてのviewControllerからボタンを追加する必要がありますか?すべてのviewControllerのUINavigationControllerでUiBarButtonItemを追加する方法

例:3つのUIViewController(VC1、VC2、VC3)があり、NavigationController(NC)でこの要素をプッシュできます。私はVC1ののviewDidLoadで書くことができますVC1のための右のナビゲーション項目としてボタンを追加する必要がある場合:

UIBarButtonItem *settingsBtn = [[UIBarButtonItem alloc]initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings)]; 
self.navigationItem.rightBarButtonItem = settingsBtn; 

私はVC2とVC3のためにも、NC上のこのボタンを必要とする場合、私は、VC2とVC3にこのコードを追加する必要がありますVC1、VC2、VC3にメソッド "設定"を指定する

このボタンを共有することはできますか?どのように私は共有メソッドとして設定メソッドを定義することができますか?

答えて

1

これを行う1つの方法は、UIViewControllerが由来する親クラスを持つことです。親クラスでは、たとえばviewDidLoadというボタンを設定できます。お子様のクラスでは、viewDidLoadメソッドで[super viewDidLoad];を実行します。

希望すると便利です。

+0

はい、高速でOOPソリューションです:)私はあなたに900評判ポイントをもたらします:Pもう一度donkimありがとう! – MatterGoal

+0

喜んで助けてください!私はこのコミュニティから多くのことを学び、貢献してうれしいです。 :) – donkim

1

UINavigationControllerの代理人になります。

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated { 
UIBarButtonItem *settingsBtn = [[UIBarButtonItem alloc]initWithTitle:@"Settings" 
                   style:UIBarButtonItemStyleBordered 
                   target:self 
                   action:@selector(settings)]; 
viewController.navigationItem.rightBarButtonItem = settingsBtn; 
} 
関連する問題