1

したがって、これはアイテムをナビゲーションバーに追加するときに機能しますが、インターフェイスビルダーを介して下部のバーに設定されたツールバーにアイテムを追加すると、背景画像が表示されません。

UIBarButtonItem *resetButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Reset" style:UIBarButtonItemStylePlain target:self action:@selector(resetCriteria:)];
UIImage *img = [UIImage imageNamed:@"someImage.png"];
    img = [img stretchableImageWithLeftCapWidth:5 topCapHeight:20];
    [resetButtonItem setBackgroundImage:img forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

self.toolbarItems   = [NSArray arrayWithObjects: resetButtonItem, nil];

背景が表示されないだけでなく、他の動作も同様に機能しません(ただし、これらのバーボタンアイテムをナビゲーションバーに追加すると正常に機能します)

4

1 に答える 1

2

同じことを行うには、次の方法を試してください。

UIBarButtonItemでカスタムビューを設定します。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 30, 30);
[btn setImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(resetCriteria:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *Item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.toolbarItems   = [NSArray arrayWithObject:Item];
[Item release];

CustomViewinitメソッドを使用してUIBarButtonItemに任意のビューを設定できます。ImageViewを設定できます。ただし、ImageViewはUIControlイベントを処理しません。

于 2012-08-14T18:00:46.987 に答える