Reputation: 5301
I have created a UIBarButton item in Interface Builder and linked it to a UIBarButton item property in the class. In Interface Builder it's Style = Plain and Identifier = Custom and it's Title is blank.
Inside the class file on the viewDidLoad method I am trying to add a custom view to this UIBarButtonItem property.
E.g
UISegmentedControl *newButton = [[UISegmentedControl alloc] initWithItems:....];
newButton.momentary = YES;
newButton.segmentedControlStyle = UISegmentedControlStyleBar;
newButton.tintColor = [UIColor .....];
[self.myBarButtonItem setCustomView:newButton];
and this results in NOTHING showing up at all. Why is that?
I've read that if I create the UIBarButtonItem programmatically:
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:newButton];
and then add this BarButtonItem to the toolbar - it would work. My issue is I have lots of stuff going on my toolbar and this UIBarButton item needs to be on the FAR right of the toolbar and if I can't link to it directly in interface builder, then I'd have to build out ALL my toolbar items programmatically to get the layout I need going.
So is there a way to do this with a customView when linking to a UIBarButtonItem created in IB?
Thanks!
Upvotes: 2
Views: 3773
Reputation: 14324
To change stuff that's on a UIToolBar you use it's items property. That should answer your question : How to programmatically replace UIToolBar items built in IB
Edit:
The way i like to work with those, is make a bunch of IBOutlets in the view controller class for each uibarbuttonitem. In Interface Builder, i put the first (default) items to be on the toolbar normally as a toolbar subview and all that, and the rest of them i put as top level items in the xib (same level as the view that is connected to the view controller's .view property outlet). That way i don't have to programatically create them. And still have them hidden to later attach them to the uitolbar.
If you use this approach than don't forget to call release on the top level IBOutlets if you use ivar IBOutlets (as opposed to @property IBOutlets) as all top level objects in a xib that aren't connected to a KVC compilant reference.
Upvotes: 3