2012-07-23 9 views
9

私は4つのビューコントローラを持つタブバーコントローラを持ち、ナビゲーションコントローラにこのタブバーコントローラを持っています。バーボタンタブバーコントローラナビゲーションバーの1つのみの項目

タブバーコントローラの1つの特定のビューコントローラ用にUIBarButtonItemを表示したいとします。

私は、次の

if (tabBarController.selectedViewController == customTourViewController) 
    { 
     [tabBarController.navigationItem setRightBarButtonItem:done]; 
    } 

を使用しようとしたが、ボタンは表示されません。

すべてのビューコントローラをナビゲーションコントローラに配置すると、そのビューのボタンが表示されますが、ナビゲーションバーは2つしかありません。

最初のソリューションを実装する方法はありますか?おかげさまで 個々のタブのための私の個々のビューコントローラで

答えて

21

は、私がボタンを必要とする1に次のようにあります

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                    style:UIBarButtonSystemItemDone target:nil action:nil]; 
    self.tabBarController.navigationItem.rightBarButtonItem = rightButton; 
} 

し、ボタンを必要としないビューコントローラでは、私が持っている:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.tabBarController.navigationItem.rightBarButtonItem = nil; 
} 

それはあなたのために働いていないのであれば、私はそれがself指定(私はselfを省略した場合、私は、コンパイラのエラーを取得する)ことなく、tabBarControllerをご参照だかはわかりません。そして、あなたのtabBuControllerサブクラスにあれば、self.navigationItem.rightBarButtonItemが必要なので、このコードはどこですか?あなたはその変数名のために定義された独自のivarを持っていますか?または、doneが正しく定義されていることを確認してください(つまり、nilではなく)。または、このコードがすべて呼び出されていることを確認してください(おそらく、ブレークポイントを設定するか、またはNSLogを挿入して、このコードに確実に到達していることを確認してください)。

+0

ありがとう!それが助けになりました。 – ratsimihah

+0

作品:Dありがとう –

+0

保存日の仲間!乾杯! – Marcelo

3

また、ボタンが必要なビューと同じビューでviewWillDisappearを実装することもできます。

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated];   
    self.tabBarController.navigationItem.rightBarButtonItem = nil; 
} 
関連する問題