7

iPhone OS 3.0では、setToolbarItems:animated:メソッドを使用してUINavigationControllerのツールバー項目を設定できます。ただし、これにはUIToolbarItemの配列を渡す必要があります。これらのツールバーアイテムをプログラムで作成することはできますが、可能であればInterface Builderで作成することをお勧めします。ツールバーの設定UINavigationController

これを念頭に置いて、私は "MyGreatViewController.xib"にUIToolbarを作成し、それに必要なツールバー項目を設定しました。次に、「MyGreatViewController.m」で、私は、ツールバーからアイテムを取得し、setToolbarItems:animated:に渡す:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self setToolbarItems: [toolbar items]]; 
} 

... toolbarはUIToolbarを参照IBOutletです。

これは良いアプローチですか?これを達成するより良い方法はありますか?プログラムで項目を作成するだけでいいですか?

+0

私は何かを理解していない:あなたは、「私を言いますツールバーからアイテムを取得する "が、ツールバーに戻します。すでに表示されていませんか? – Oscar

答えて

4

これは完全に受け入れられる方法ですが、xibファイルの読み込みはiPhoneで非常に高価で、viewDidLoadメソッドでツールバーアイテムをプログラマチックに作成するほうが早いかもしれません。

+3

ビューコントローラークラスを初期化するときにXIBが既にロードされているので(ビューコントローラーファイルを作成するときに「With with XIB with user interface」を選択した)、この方法はプログラムによってツールバー項目を作成するよりも高価であってはなりません。 –

+0

ああ、既にXIBをロードしている場合は余分な時間を追加しません。 XIB *からアーカイブオブジェクトを保管することは、コードで作成するよりもコストがかかりますが、ビューの読み込みに時間がかかる場合を除き、心配はありません。 – iKenndac

12

これはどこに書かれているのか分かりませんが、Interface Builderでナビゲーションコントローラのツールバーを有効にすると、バーアイテムをビューコントローラにドラッグすると自動的に表示されますナビゲーションコントローラのツールバー。

例えば、ここでは(Snow Leopardの上のXcode 3.2を使用して)私たちは何ができるかです:

  1. ファイル - >新規プロジェクト.... ナビゲーションベースのアプリケーションを選択して、プロジェクトを作成します。
  2. Interface BuilderでMainWindow.xibを開きます。
  3. ナビゲーションコントローラを選択し、属性インスペクタで[ツールバーを表示]チェックボックスをオンにします。これにより、ツールバーオブジェクトが表示されます。
  4. バーボタンアイテムをライブラリからツールバーにドラッグします。ツールバーに表示されます。 NIBの階層をチェックすると、この新しいアイテムがRootViewControllerの子であることがわかります。

ナビゲーションアイテムの子として追加されたバーボタンアイテムがナビゲーションバーに表示され、ビューコントローラの子として追加されたバーボタンアイテムがツールバーに表示されるようです。

(私は偶然、この上でつまずい誰もがこの動作のドキュメント、または任意の追加情報を見つけることができれば、私はそれを聞いてみたいと思います。。)

+0

私はそれがそうであると思われる方法だと信じています。 'UIViewController'のようなものは、一致するファイル名があれば魔法のようにxibをロードします。 – Sneakyness

+0

それは動作します!これは間違いなく、ナビゲーションビューでツールバーを設定する最良の方法だと私は思います。 – Nathan

+0

私のアプリケーションでは、Tab Bar Controllerがあり、タブの1つはnavigationControllerです。かなり標準的な設定です。しかし、クリストファーが提案していることに従えば、ステップ3の後、IBのタブバーの後ろにツールバーが表示されます!そして、ステップ4(セグメントコントロール/ボタンを追加しようとしました)を試みると、ツールバーにドロップすることができません。私はここに何かを逃していますか – Dev

関連する問題