I'd like to add a right bar button with the system's info icon to a navigation bar. But I see that UIBarButtonSystemItem
does not provide such type of button. On the other hand, so I tried with a UIButton
of type UIButtonType.infoLight
, but I am not allowed to assign it to navigationItem.rightBarButtonItems
.
Is there any way to do this?
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.
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
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;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.