2010-12-28 9 views
1

私のアプリケーションには、UINavigationControllerによって管理されているUIViewControllerサブクラスがあります。私のUIViewControllerサブクラスののviewDidLoadでUIViewController:setToolbarItemsとnavigationItem

、私はこのようなツールバーにUIBarButtonItemを追加しようとしていた。

settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" 
    style:UIBarButtonItemStylePlain target:self action:@selector(viewSettings:)]; 
[self setToolbarItems:[NSArray arrayWithObject:settingsButton]]; 

これは私のために働いていなかったので、いくつかの周りグーグルでの後、私はこれを試してみました:

[[self navigationItem] setRightBarButtonItem:settingsButton]; 

これは問題なく機能しました。 UIViewController documentationを読むことから、setToolbarItemsが動作しなかった理由について私はまだ混乱しています。デバッガで、ボタンがviewDidAppearメソッドのtoolbarItems配列にあることを確認しました。ボタン自体はツールバーに表示されませんでした。

私の質問は、最初のコードスニペットでsetToolbarItemsがうまく動作しなかった理由ですか?

私のxibにこのビューコントローラのツールバーが設定されていないと、違いがあります。 difference.Wheneverは、あなたがあるナビゲーションベースのアプリケーションのために、デフォルトでは表示上のバーを参照してください作る

[self setToolbarItems:[NSArray arrayWithObject:settingsButton]]; 

シャニー

答えて

5

はい:

[toolbar setItems:[NSArray arrayWithObject:settingsButton] animated:YES]; 

instadのを使用する

+0

hmm ..良い点.. – EmptyStack

0

試してみます実際には、ナビゲーションバーです。あなたはself.navigationItemを参照してアイテムを追加できます。

0

ipadアプリでは、ツールバー項目を「topViewController」に設定する必要があります(これは直感的です)。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:catView]; 
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item 1" style:UIBarButtonItemStylePlain target:nil action:nil]; 
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item 2" style:UIBarButtonItemStylePlain target:nil action:nil]; 
[nav setToolbarHidden:NO animated:YES]; 
// WRONG: [nav setToolbarItems:[NSArray arrayWithObjects:addButton, nil]]; 
// CORRECT (for ipad apps): 
[nav.topViewController setToolbarItems:[NSArray arrayWithObjects:item1, item2, nil] animated:NO]; 
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:nav]; 
1
  1. [自己setToolbarItems:[NSArrayのarrayWithObject:settingsButton]。基本的に、ナビゲーションコントローラの下のツールバーを入力します。左と右のトップバーボタンではありません。

  2. デフォルトでは、下部のツールバーは表示されません。それを表示するには、[self.navigationController setToolbarHidden:NO]を呼び出す必要があります以下

  3. は、関連するドキュメントである - UINavigationControllerクラスリファレンス ツールバー:ナビゲーションコントローラに関連付けられている

カスタムツールバー。 (読み取り専用)

@property(アトミック、読み取り専用)UIToolbar *ツールバーのディスカッションこの プロパティは ナビゲーションコントローラによって管理される組み込みのツールバーへの参照が含まれています。このツールバーへのアクセスは、ツールバーからアクションシートを表示したいクライアントのためにのみ提供されます( )。 は、UIToolbarオブジェクトを直接変更しないでください。

このツールバーのコンテンツの管理は、このナビゲーションコントローラに関連付けられたカスタム表示 コントローラを介して行われます。ナビゲーションスタックの各ビュー コントローラに対して、 UIViewControllerのsetToolbarItems:animated:メソッドを使用して、カスタムセットの ツールバーアイテムを割り当てることができます。

このツールバーの表示はtoolbarHidden プロパティによって制御されます。ツールバーは、現在表示されているView ControllerのhidesBottomBarWhenPushedプロパティ にも従い、必要に応じて自動的に を表示して表示します。

関連する問題