2

プログラムで UIBarButtonItem を追加する適切な方法は何ですか? 私の場合、コントローラー階層に1つ追加しようとしてrightBarButtonItemいますが、コントローラー階層を飛び回っていますが、ボタンをどこにも表示できないようです。

これが私の現在のコードです:

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.navigationItem setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"] style:UIBarButtonItemStylePlain target:self action:@selector(scanEquipment:)] autorelease]];
}

誰かが私を正しい方向に導いてくれることを願っています。これを呼び出そうとしているコントローラーは 3 レベルです。つまり、UITabBarController-> UIViewController (Settings, 1st level)-> UIViewController (Vehicle, 2nd level)->UIViewController (Inventory, 3rd level)です。

とにかく、助けてくれてありがとう!

4

1 に答える 1

1

[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"]おそらく動作しません。initWithContentsOfFileは、ファイル名だけでなく、画像ファイルへの完全なパスを取ります。それがおそらく問題です。これはnilを返します。これにより、ボタンコンストラクター全体がnilを返します。

(また、リリースまたは自動リリースなしでinitメソッドを呼び出すことにより、このイメージをリークしています。)

代わりに試してみてください[UIImage imageNamed:@"Barcode-White"]。アプリのリソースで画像ファイルを検索し、画像を1回だけ読み込んでから、何度呼び出されてもメモリにキャッシュするという追加のボーナスがあります。

http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/imageNamed

それ以外は、うまくいくはずです...

また、ナビゲーションバーのアイテムには常に。のスタイルがありUIBarButtonItemStyleBorderedます。に設定しようとするとUIBarButtonItemStylePlain、システムによって無視されます。(しかし、それが機能しない理由であってはなりません。)

于 2011-03-26T05:16:38.137 に答える