2010-11-28 12 views
4

私は以下のようにツールバーアイテムをプログラムで追加しているナビゲーションツールバーを持っています。ツールバーが正しく表示され、ツールバーのスタイルが黒く不透明に設定されます。ツールバーのボタンは表示されません。どうして?あなたはこの方法ナビゲーションツールバーにアイテムを追加する

[toolbar setItems:]; 

代わりの

[[self navigationController] setToolbarItems: animated:]; 

答えて

26

UINavigationController

[[[self navigationController] toolbar] setToolbarItems:myItems animated:NO]; 

は、ナビゲーションバーと現在の可視のビューコントローラからツールバーを使用する必要があるボタンをフェッチ

。つまり、ナビゲーションコントローラではなく、ビューコントローラに必要なボタンを追加します。あなたが行うのであればそれだけで正常に動作する必要があります:

[self setToolbarItems:myItems animated:NO]; 

は、追加ボタンをコアデータとナビゲーションベースのアプリケーションのデフォルトのテンプレートでナビゲーションバーに追加された方法であることを比較:

self.navigationItem.rightBarButtonItem = addButton; 

つまり、新しいView Controllerをプッシュすると、ツールバーのボタンが消え、ポップバックすると再び表示されます。

+1

ロバート - ありがとう。これは問題を解決するだけでなく、何が起こっているのか理解するのに役立ちます。 –

+0

ロバート、素晴らしい答え!私はDon Wilsonに同意する必要があります!ありがとう – mobius

+0

'[self setToolbarItems:myItems animated:NO];のおかげで、 – Massmaker

0

4行目必要な修正があるように思われる。代わりにあなたの現在の行4

+0

これと同じ結果が得られました。上記のコメントを参照してください。 –

0

あなたが最初の行にしていない中であなたのnavigationControllerが所有するツールバーを参照している呼び出すと、ツールバーにボタンを割り当てるには

//Set up the toolbar 
[[[self navigationController] toolbar] setBarStyle:UIBarStyleBlackOpaque]; 
UIBarButtonItem *myButtonItem = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(handleMyButton)]; 
NSArray *myItems = [NSArray arrayWithObjects: myButtonItem,nil]; 
[[self navigationController] setToolbarItems:myItems animated:NO]; 
[myButtonItem release]; 
+0

UIToolbarにはsetToolbarItemsメソッドがありません。以下の答えに記述されているように、setItemsメソッドを持っています。しかし、私がそのアプローチを使用する場合、私は同じ結果を得ます。 UINavigationControllerはsetToolbarItemsメソッドを持っていますが、その目的はデフォルトツールバーの項目を設定することです。私はまだ上記のコードに問題があるのを見ていない。 –

+0

この行はcoorect [[[self navigationController]ツールバー] setItems:items animated:NO]です。 –

0

ナビゲーションコントローラオブジェクトのtoolbarHiddenプロパティをNOに設定してツールバーを表示します。

関連する問題