How to add a standard info button to a navigation bar in iOS?

ぐ巨炮叔叔 提交于 2019-12-06 03:06:16

this can be achieved using UIButton object of type .infoLight

let infoButton = UIButton(type: .infoLight)
infoButton.addTarget(self, action: #selector(infoButtonTapped), forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem(customView: infoButton)
self.navigationItem.rightBarButtonItem = barButton

alternatively:

by adding infoImage to your Asset catalog and create barButtonItem using below code

let infoButton = UIBarButtonItem(image: UIImage(named: "infoImage"), style: .Plain, target: self, action: #selector(ViewController.infoButtonTapped))
self.navigationItem.rightBarButtonItem = infoButton 

You can initialize a UIBarButtonItem with a custom view:

let button = UIButton(type: .infoLight)
let barButton = UIBarButtonItem(customView: button)

Swift 5.0

override func viewDidLoad() {
    super.viewDidLoad()

    let infoButton = UIButton(type: .infoLight)
    infoButton.addTarget(self, action: #selector(infoButtonTapped), for: .touchUpInside)
    navigationItem.rightBarButtonItem = UIBarButtonItem(customView: infoButton)
}

@objc func infoButtonTapped() {}

I have found an easier way to add info icon to a navigation bar using Interface Builder.

  1. Don't add Bar Button Item to the navigation bar
  2. Add a Button to the UIView
  3. Change a button type to Info Light
  4. Drag and drop the button to the right corner of the navigation bar. It is all. Bar Button Item will appear automatically and the added info Button will be under the Bar Button Item (Then, make an action as usual for the Button)
UIButton *doneBtn = [[UIButton alloc] initWithFrame...];
[doneBtn setTitle:@"Submit" forState:UIControlStateNormal];
doneBtn.titleLabel.font = [UIFont systemFontOfSize: 14.0];
[doneBtn addTarget:self action:@selector(doSubmit:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:doneBtn];
self.navigationItem.rightBarButtonItem = rightButton;

Add the infoButton image into your assets and set as barButton by providing the name .

UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"infoImage.png"] style:UIBarButtonItemStyleDone target:self action:@selector(barButtonAction)];

    self.navigationItem.rightBarButtonItem = item;

In Swift

  let item = UIBarButtonItem(image: UIImage(named: "infoImage.png"), style: .Plain, target: self, action: #selector(barButtonAction))

        self.navigationItem.rightBarButtonItem = item
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!