Set image and title for panel item?

I currently have a custom navigation controller with panel elements that are just text buttons. Is it possible to save the title of the panel elements and also set them as images (icon image + name at the bottom).

class NavigationController: UINavigationController { var mode: NavigationMode = .Swipe { didSet { self.setButtonAttributes() } } 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.setButtonAttributes() navigationItem.leftBarButtonItems = [self.leftBarButton, self.middleBarButton, self.rightBarButton, self.rightBarButton2] } 

Updated:

  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:") } 
+5
source share
2 answers

You can create an instance of UIButton, set the image and 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

 func someAction() { } 
+20
source

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) 
+6
source

Source: https://habr.com/ru/post/1247477/


All Articles