Set image and title for bar button item? Set image and title for bar button item? ios ios

Set image and title for bar button item?


You can create UIButton instance, set an image and a title for it, and then create your UIBarButtonItem with it:

    let button = UIButton(type: .System)    button.setImage(UIImage(named: "YourImage"), forState: .Normal)    button.setTitle("YourTitle", forState: .Normal)    button.sizeToFit()    self.leftBarButton = UIBarButtonItem(customView: button)

To add an action:

    button.addTarget(self, action: #selector(self.someAction), forControlEvents: .TouchUpInside)

where self.someAction is

func someAction() {}


Create an UIButton, set an image and a title for it and use it as a custom image to init your UIBarButtonItem(customView:) with it.

If you want the image to be on the right side of the button, you can set the button's semanticContentAttribute to .forceRightToLeft.

Swift 4 example:

let view = UIView()let button = UIButton(type: .system)button.semanticContentAttribute = .forceRightToLeftbutton.setImage(UIImage(named: "DocumentsIcon"), for: .normal)button.setTitle("Documents", for: .normal)button.addTarget(self, action: #selector(openDocuments), for: .touchUpInside)button.sizeToFit()view.addSubview(button)view.frame = button.boundsnavigationItem.rightBarButtonItem = UIBarButtonItem(customView: view)


Swift 3:

    let button = UIButton(type: .system)    button.setImage(UIImage(named: "categories_icon"), for: .normal)    button.setTitle("Categories", for: .normal)    button.addTarget(self, action: #selector(showCategories), for: .touchUpInside)    button.sizeToFit()    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)