UIBarButtonItem with no border - iphone

How can I create an UIBarButtonItem without any border, but just a label inside?
EDIT
I tried something like this with no luck:
UIBarButtonItem* langButton = [[UIBarButtonItem alloc] initWithTitle:#"EN"
style:UIBarButtonItemStylePlain target:self action:#selector(changeLang)];
self.navigationItem.leftBarButtonItem = langButton;
[langButton release];

Do the same as the following guy:
https://stackoverflow.com/a/6817554/59198
But change it so instead of an image button, you'll make a standard textual button.

Related

How to add image(s) to UIToolBar?

I'd like to add an image to a UIToolBar that a user cannot interact with. It would essentially be just a non-interactive indicator, like a badge.
Is this possible?
If so, how?
Create an UIBarButtonItem with an Image and add it:
Example:
UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleBordered target:nil action:nil];
If you don't want the button appearance, try to use:
UIBarButtonItem* item = [UIBarButtonItem initWithCustomView:yourImageView];

UIBarButtonItem doesn't highlight when tapped if in a Toolbar?

I need two buttons on the left side of a nav bar. The only way I've figured out how to do that is by first putting them into a UIToolbar and then setting the leftBarButtonItem to that.
If I do this it works as normal (you can see it highlight when tapped):
UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:#"Button" style:UIBarButtonItemStyleBordered target:self action:#selector(doSomething:)];
self.navigationItem.leftBarButtonItem = myBtn;
But if I do it like this, the button action still happens but there is no highlight (no visual feedback that you are tapping the button):
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:2];
UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:#"Button" style:UIBarButtonItemStyleBordered target:self action:#selector(doSomething:)];
UIBarButtonItem* myBtn2 = [[UIBarButtonItem alloc] initWithTitle:#"Button2" style:UIBarButtonItemStyleBordered target:self action:#selector(doSomethingElse:)];
[buttons addObject:myBtn];
[buttons addObject:myBtn2];
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44)];
[toolbar setItems:buttons animated:NO];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolbar];
Any idea why this causes the buttons to not highlight when touched?
I dont think the UIBarButtonItem object will be highlighted when touched up. Even for default back button in the navigation bar dosent highlight when touched up. It works in that way only . Not sure but you can try using UISegmentedControl with the single segment . It might create the highlighted illusion and would look like barbutton only.
In your selector function (e.g. doSomething), set the tintColor property of the button to your desired highlighted color if pressed, and the default if unpressed. And make sure the highlight color of your button is different than the default color so that you know that it is highlighted.
As per the Apple Docs, the function of showsTouchWhenHighlighted is:
A Boolean value that determines whether tapping the button causes it to glow.
but this is only for UIButton. I don't believe UIBarButtonItem has a highlight option.
Note that UIBarButtonItem inherits from UIBarItem which inherits from NSObject, not UIButton, so you can expect different behavior.

need help about add navigationItem

As you see in the images, the top picture is created automatically when navigation controller is pushed
If I try to create one like this it will appear like the bottom picture.
How can I programmatically create a Back Button like the top picture?
Here is my code to create the Done button
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:#selector(backtohome)];
UIBarButtonItem *theBackButton = [[UIBarButtonItem alloc] initWithTitle:#"Done"
style:UIBarButtonItemStylePlain target:self action:nil];
self.navigationItem.backBarButtonItem = theBackButton;
[theBackButton release];

How to use an icon as back button for UINaviationController

Does anyone know how to use an icon instead of text for the UINavigationController back button?
alt text http://www.img-hosting.de/bilder/24505iPhoneSimulator2png
Try this:
UIBarItem *backBar = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = backBar;
[backBar release];
you can also use initWithCustomView if you need something more elaborate

Programmatically changing the identifier property of UIBarButtonItem

Through Interface Builder I have the ability to change the Identifier of a UIBarButtonItem to something like "Add" (or "Undo", "Redo" etc...). This gives my button a nice "+" image.
How can I set this programatically? The UIBarButtonItem does not accept a "setIdentifier" message.
Once constructed, a UIBarButtonItem's "Identifier" can not be modified. However, the UI can be changed by replacing the button with a programmatically constructed variant. For example:
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:#selector(doAddAction:)];
If you want one button style: bordered and identifier: camera use
UIBarButtonItem *btn;
btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:#selector(shotAction:)];
btn.style=UIBarButtonItemStyleBordered;
Once the UIBarButtonItem is created, there is no way to change the identifier. However, you can create a new UIBarButtonItem to replace the old UIBarButtonItem
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction
target:self
action:#selector(buttonClickedAction:)];
self.navigationItem.rightBarButtonItem = barButton;