Navigation bars are one of the most common user interface components in iOS, so being able to add buttons to them is something you'll do a lot. You can add buttons to the left and right side of a navigation bar, and as of iOS 5.0 you can add more than one to either side.
Note: bar button items don't belong to the
UINavigationBar directly. Instead, they belong to a
UINavigationItem that is currently active on the navigation bar, which in turn is usually owned by the view controller that is currently active on the screen. So, to create bar button items for your view controller, you would do this:
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
That will call the
addTapped() method on the current view controller when either button is tapped. Note that the first one uses a standard system icon (recommended when it's available!) and the second one uses text.
Like I said, as of iOS 5.0 you can attach more than one bar button item to either side of the navigation bar, like this:
let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) let play = UIBarButtonItem(title: "Play", style: .plain, target: self, action: #selector(playTapped)) navigationItem.rightBarButtonItems = [add, play]
Sponsored You’re already busy updating your app for Swift 4.2 and iOS 12, so why not let Instabug help you find and fix bugs? Add just two lines of code to your project and receive comprehensive reports with all the feedback you need to ship a world-class app – click here to learn more!
Available from iOS 2.0
Did this solution work for you? Please pass it on!
Other people are reading…
About the Swift Knowledge Base
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Learn Swift faster!
Take your Swift learning to the next level: buy the Hacking with Swift e-book and get bonus material to help you learn faster!