Here is what I used previously,
var barButtonItem = UIBarButtonItem(image: backImgs, style: UIBarButtonItemStyle.plain, target: self, action: Selector(\"menu
create an extension for barbutton item.
extension UINavigationItem {
func addSettingButtonOnRight(){
let button = UIButton(type: .Custom)
button.setTitle("setting", forState: .Normal)
button.titleLabel?.font = UIFont.systemFontOfSize(15.0)
button.layer.cornerRadius = 5
button.backgroundColor = UIColor.grayColor()
button.frame = CGRect(x: 0, y: 0, width: 100, height: 25)
button.addTarget(self, action: #selector(gotSettingPage), forControlEvents: UIControlEvents.TouchUpInside)
let barButton = UIBarButtonItem(customView: button)
self.rightBarButtonItem = barButton
}
func gotSettingPage(){
}
}
And call it from viewDidLoad()
self.navigationItem.addSettingButtonOnRight()