2011-12-05 12 views
0

グローバルAppDelegateにグローバル右ボタンボタンを追加して、すべてのビューコントローラにこのボタンが自動的に表示されるようにします。Three20のAppDelegateにグローバル右ボタンボタン(UINavigationController)を追加する方法

私は上記のコードは、上記のコードでworking..any問題ではありません。もちろん、AppDelegate

に追加?

+0

私の知る限り、iPhone SDKの現在の状態ではこれを行うことはできません。あなたはあなたが持っている各ビューコントローラにそのアイテムを追加する必要があります。 –

答えて

7

UINavigatorControllerは常にトップ/ルートコントローラからではなく、現在表示されているビューコントローラのボタンを使用しているため、自分のやり方で行うことはできません。

あなたができることは、新しいビューコントローラでTTViewControllerをサブクラス化し、左のバーボタン項目を設定することです。

/////////////////////////////////////////////////////////////////////////////////////////////////// 
/////////////////////////////////////////////////////////////////////////////////////////////////// 
@implementation BaseViewController 


/////////////////////////////////////////////////////////////////////////////////////////////////// 
/////////////////////////////////////////////////////////////////////////////////////////////////// 
#pragma mark - 
#pragma mark UIViewController 



/////////////////////////////////////////////////////////////////////////////////////////////////// 
- (void)viewDidLoad { 
    [super viewDidLoad]; 


    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Test", @"") 
                      style:UIBarButtonItemStyleBordered target:self action:@selector(showTest)] autorelease]; 
} 

、その後、あなたはあなたがする必要がどのような右のナビゲーションバーの項目

+0

ありがとうございます。しかし、私は常に私のUITabBarControllerのviewDidLoadにコードを追加すると、なぜアプリケーションに表示されるUITabBarControllerを持っているので、ボタンを表示することはできません? – Howard

+0

UITabBarControllerにはナビゲーションバーがありません。 UINavigationControllerだけがナビゲーションバーとナビゲーションバーボタンを提供します。インターフェイスビルダのナビゲーションバーにボタンアイテムを配置することができます。唯一のシミュレーションであり、あなたのアプリでそのように表示されません。 は比較: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html http://developer.apple.com/library/ios/ #documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html – rockstarberlin

4

が含まれている。このベースコントローラからすべてのView Controllerを拡張する必要がありますが、あなたがにフックしたいナビゲーションコントローラを活用することです。そして、あなたはあなたにこれらのイベントを与えるであろう(各ナビゲーションコントローラは、デリゲートのプロパティを持つ)UINavigationControllerDelegateを実装することができます

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack. 
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

あなたは

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

を実装し、代わりにあなたの右ボタンを置くことができます。

+1

これは、サブクラス化を必要としないため、最良のソリューションと思われます。これは、さまざまなUIViewタイプを使用する場合に制限的です。 –

+0

私はこれらを使って、アプリケーションテーマの変更時にナビゲーションコントローラのビューコントローラのスタイリングを更新します。非常に便利。 –

+0

ルートナビゲーションコントローラのすべてのビューコントローラに上記のコードを追加することを意味しますか?私はナビゲーションコントローラのクラスにのみコードを追加しようとしましたが、動作しませんでした。 –

関連する問題