I need to add a button to the UINavigationItem titleView
(actually to the center of the UINavigation Bar.
I've used the following code to accomplish so:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 70, 30);
[btn setSelected:YES];
[btn setTitle:@"list" forState:UIControlStateNormal];
And I've go the following:
I need to give the same style of the "Done" button (which is UIBarButtonItem
) to the button "list"?
You can use UISegmentedControl:
Yes, you should use a UIBarButtonItem too for the button "list"
using custom identifier and a title properties.
You can use the UIBarButtonItem identifier "flexible space" to display your button "list" at the center.
I have used andrej's UISegmentedControl-based approach and expanded it a bit to behave more like a normal UIButton:
For basic usage, you can use it as a UIButton drop-in replacement:
The event will only fire when the touchup happened inside the bounds of the segmented control. Enjoy.
UIBarButtonItems can only be used as items in a UIToolbar (they're not actually instances of UIView), so the only way to directly use a UIBarButtonItem in your titleView would be to set an instance of UIToolbar as your titleView and add your barButtonItem to that toolbar. However, I don't think that will work.
I think what you'll need to do is find a way to mimic the UIBarButtonItem style using a plain old UIButton. You can get the actual image file used to create UIBarButtonItems using the UIKit artwork extractor. Then it's just a matter of creating a custom UIButton using that background image, and you're good to go.