Skip to content

UIBarButtonItem

//Swift
let barButtonItem = UIBarButtonItem(title: "Greetings!", style: .Plain, target: self, action: #selector(barButtonTapped))
self.navigationItem.rightBarButtonItem = barButtonItem
//Objective-C
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Greetings!" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonTaped)];
self.navigationItem.rightBarButtonItem = barButtonItem;

enter image description here

Creating a UIBarButtonItem in the Interface Builder

Section titled “Creating a UIBarButtonItem in the Interface Builder”

The example below shows how to add a navigation bar button (called a UIBarButtonItem) in the Interface Builder.

Add a Navigation Controller to your Storyboard

Section titled “Add a Navigation Controller to your Storyboard”

Select your View Controller and then in the Xcode menu choose Editor > Embed In > Navigation Controller.

navigation controller screenshot

Alternatively, you could add a UINavigationBar from the Object Library.

Drag a UIBarButtonItem from the Object Library to the top navigation bar.

UIBarButtonItem in the object library screenshot

It should look like this:

UIBarButtonItem placed on the storyboard screenshot

You could double-click “Item” to change the text to something like “Refresh”, but there is an actual icon for Refresh that you can use. Just select the Attributes Inspector for the UIBarButtonItem and for System Item choose Refresh.

enter image description here

That will give you the default Refresh icon.

enter image description here

Control drag from the UIBarButtonItem to the View Controller to add an @IBAction.

class ViewController: UIViewController {
@IBAction func refreshBarButtonItemTap(sender: UIBarButtonItem) {
print("How refreshing!")
}
}

That’s it.

Bar Button Item Original Image with no Tint Color

Section titled “Bar Button Item Original Image with no Tint Color”

Provided that barButtonItem has a non-null image property (e.g. set in the Interface Builder).

Objective-C

barButtonItem.image = [barButtonItem.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

|Parameter|Description |---|---|---|---|---|---|---|---|---|--- |title|The UIBarButtonItem title |style|The style of the UIBarButtonItem |target|The object to receive the UIBarButtonItem action |action|The selector (method) to be performed when the UIBarButtonItem is pressed

Referencing self.navigationItem assumes that the UIViewController is embedded inside a UINavigationController.