Définir l'image et le titre de l'élément du button de la barre?

J'ai actuellement un controller de navigation personnalisé avec des éléments de button de barre qui sont simplement des buttons de text. Est-il possible de conserver le titre des éléments du button de la barre, mais aussi de les définir comme des images (image de l'icône + titre en dessous).

class NavigationController: UINavigationController { var mode: NavigationMode = .Swipe { didSet { self.setButtonAtsortingbutes() } } private var leftBarButton: UIBarButtonItem! private var middleBarButton: UIBarButtonItem! private var rightBarButton: UIBarButtonItem! private var rightBarButton2: UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() } func configureNavigationItem(navigationItem: UINavigationItem) { //Configure the bar buttons text and actions if (self.leftBarButton == nil) { self.leftBarButton = UIBarButtonItem(title: "Menu1", style: .Plain,target: self, action: "menu1Pressed:") } if (self.middleBarButton == nil) { self.middleBarButton = UIBarButtonItem(title: "Games", style: .Plain, target: self, action: "gamesPressed:") } if (self.rightBarButton == nil) { self.rightBarButton = UIBarButtonItem(title: "Menu3", style: .Plain, target: self, action: "menu3Pressed:") } if (self.rightBarButton2 == nil) { self.rightBarButton2 = UIBarButtonItem(title: "Settings", style: .Plain, target: self, action: "settingsPressed:") } self.setButtonAtsortingbutes() navigationItem.leftBarButtonItems = [self.leftBarButton, self.middleBarButton, self.rightBarButton, self.rightBarButton2] } 

Actualisé:

  let button = UIButton(type: .System) button.setImage(UIImage(named: "play"), forState: .Normal) button.setTitle("Play", forState: .Normal) button.sizeToFit() leftBarButton = UIBarButtonItem(customView: button) if (self.leftBarButton == nil) { self.leftBarButton = UIBarButtonItem(title: "Play", style: .Plain,target: self, action: "Pressed:") } 

Vous pouvez créer une instance UIButton, définir une image et un titre, puis créer votre UIBarButtonItem avec:

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

Pour append une action:

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

où self.someAction est

 func someAction() { } 

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)