0

Ich habe ein barbuttonitem, das programmgesteuert über einen Navigationscontroller gemacht. Ich möchte den Titel und den Hintergrund auch als hervorgehobenen Effekt anzeigen, wenn ich auf diese Schaltfläche klicke. Hier ist der Code, den ich verwenden:kombiniert UISegmentedControl und UIBarButtonItem in Navigation Controller zu benutzerdefinierten barbuttonitem Hintergrundbild

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]; 

Leider ist dies nicht funktioniert. Anstatt das UIBarButtonItem anzuzeigen, verschwindet es einfach (es wird zu 100% transparent). Wenn ich die setCustomView-Methode auslasse, wird das UIBarButtonItem angezeigt, ist jedoch nicht angepasst. Wie kann ich dieses Problem lösen?

Dank des ...

Antwort

0

Sie sind die UISegmentedControl vom UIBarButtonItem zu entfernen, wenn Sie [self.navItem.leftBarButtonItem setCustomView:barBackground]; nennen. Sie müssen das UISegmentedControl und nicht das UIBarButtonItem ändern.

Verwandte Themen