UINavigationControllerのツールバー項目の設定
質問
iPhone OS 3.0 では、次のコマンドを使用して UINavigationController のツールバー項目を設定できます。 setToolbarItems:animated:
方法。ただし、これには UIToolbarItem の配列を渡す必要があります。これらのツールバー項目はプログラムで作成することもできますが、可能であれば Interface Builder で作成したいと考えています。
これを念頭に置いて、「MyGreatViewController.xib」に UIToolbar を作成し、そこに必要なツールバー項目を追加しました。次に、「MyGreatViewController.m」で、ツールバーから項目を取得し、それらを渡します。 setToolbarItems:animated:
:
- (void)viewDidLoad {
[super viewDidLoad];
[self setToolbarItems: [toolbar items]];
}
...どこ toolbar
UIToolbar を参照する IBOutlet です。
これは良いアプローチでしょうか?これを達成するためのより良い方法はありますか?アイテムをプログラムで作成するだけでよいでしょうか?
解決
それはそれを行うための完全に受け入れられる方法ですが、ロードXIBファイルをiPhone上で非常に高価であり、よくあなたのviewDidLoadメソッドでプログラム的にツールバー項目を作成するために、より高速であってもよいことを心に留めない。
他のヒント
これがどこかに文書化されているかどうかはわかりませんが、Interface Builder では、ナビゲーション コントローラーのツールバーを有効にすると、バー項目をビュー コントローラーにドラッグでき、それらは自動的にナビゲーション コントローラーのツールバーに表示されることがわかりました。 。
たとえば、(Snow Leopard で Xcode 3.2 を使用して)できることは次のとおりです。
- ファイル -> 新しいプロジェクト....選ぶ ナビゲーションベースのアプリケーション そしてプロジェクトを作成します。
- 開ける
MainWindow.xib
インターフェイスビルダーで。 - Navigation Controller を選択し、Attributes インスペクタで「Shows Toolbar」ボックスにチェックを入れます。これにより、ツールバー オブジェクトが表示されます。
- バー ボタン項目をライブラリからツールバーにドラッグします。ツールバーに表示されます。NIB の階層を確認すると、この新しい項目が NIB の子であることがわかります。
RootViewController
.
ナビゲーション項目の子として追加されたバー ボタン項目はナビゲーション バーに表示され、ビュー コントローラーの子として追加されたバー ボタン項目はツールバーに表示されるようです。
(偶然ここを知りました。誰かがこの動作に関するドキュメントや追加情報を見つけたら、それについて聞きたいです)。