2010-11-29 11 views
0

ナビゲーションコントローラの上にプログラムで作成されたbarbuttonitemがあります。私はそのバーのボタンを押すとタイトルと背景も強調表示された効果を表示したい。ナビゲーションコントローラのUISegmentedControlとUIBarButtonItemをカスタマイズしたbarbuttonitemの背景画像に結合する

NSArray *segmentText = [segmentTextMutable copy]; 
UIImage *image = [[[UIImage alloc] init] autorelease]; 
image = [UIImage imageNamed:@"bunga.jpg"]; 

_docSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentText]; 
_docSegmentedControl.selectedSegmentIndex = 0; 
_docSegmentedControl.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
_docSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBezeled; 
[_docSegmentedControl addTarget:self action:@selector(docSegmentAction:) forControlEvents:UIControlEventValueChanged]; 
[_docSegmentedControl setBackgroundColor:[UIColor colorWithPatternImage:image]]; 

UIView *barBackground = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; 
UIButton *barButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *buttonImage = [UIImage imageNamed:@"button.png"]; 
UIImage *buttonPressedImage = [UIImage imageNamed:@"buttonPressed.png"]; 
[[barButton titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0]]; 
[barButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[barButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
[barButton setTitleShadowColor:[UIColor colorWithWhite:1.0 alpha:0.7] forState:UIControlStateNormal]; 
[barButton setTitleShadowColor:[UIColor clearColor] forState:UIControlStateHighlighted]; 
[[barButton titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)]; 

CGRect buttonFrame = CGRectMake(0, 0, 110.0, 40); 
//buttonFrame.size.width = 110.0; 
//buttonFrame.size.height = buttonFrame.size.height; 
[barButton setFrame:buttonFrame]; 
[barButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[barButton setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted]; 
[barButton setTitle:docSegmentFileName forState:UIControlStateNormal]; 
[barButton addTarget:self action:@selector(docSegmentAction:) forControlEvents:UIControlEventTouchUpInside]; 
[barBackground addSubview:barButton]; 

UIBarButtonItem *segmentItem = [[UIBarButtonItem alloc] initWithCustomView:_docSegmentedControl]; 
self.navItem.leftBarButtonItem = segmentItem; 
self.navItem.leftBarButtonItem.title = @""; 
[self.navItem.leftBarButtonItem setCustomView:barBackground]; 

残念ながら、これは動作しません: は、ここに私が使用するコードです。 UIBarButtonItemを表示する代わりに、単純に消滅します(100%透明になります)。 setCustomViewメソッドを省略すると、UIBarButtonItemが表示されますが、カスタマイズされていません。どうすればこの問題を解決できますか?

感謝の...

答えて

0

あなたが[self.navItem.leftBarButtonItem setCustomView:barBackground];を呼び出すときには、UIBarButtonItemからUISegmentedControlを削除しています。 UISegmentedControlはUIBarButtonItemではなく、変更する必要があります。

関連する問題