Swift - 在导航栏左侧或者右侧放置多个按钮
(本文代码已升级至Swift4)
如果想要在一侧使用多个按钮,可以通过 leftBarButtonItems 和 rightBarButtonItems 来实现。
下面演示给导航栏右侧添加两个按钮(搜索和设置):
同时两个按钮间设置了间距,并将设置按钮顶到边上。

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //搜索按钮 let button1 = UIButton(frame:CGRect(x:0, y:0, width:18, height:18)) button1.setImage(UIImage(named: "search"), for: .normal) button1.addTarget(self,action:#selector(tapped1),for:.touchUpInside) let barButton1 = UIBarButtonItem(customView: button1) //设置按钮 let button2 = UIButton(frame:CGRect(x:0, y:0, width:18, height:18)) button2.setImage(UIImage(named: "settings"), for: .normal) button2.addTarget(self,action:#selector(tapped2),for:.touchUpInside) let barButton2 = UIBarButtonItem(customView: button2) //按钮间的空隙 let gap = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) gap.width = 15 //用于消除右边边空隙,要不然按钮顶不到最边上 let spacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) spacer.width = -10 //设置按钮(注意顺序) self.navigationItem.rightBarButtonItems = [spacer,barButton2,gap,barButton1] } func tapped1(){ print("搜索按钮点击") } func tapped2(){ print("设置按钮点击") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
我接着上面的问题,刚刚那个是不显示,那,还有显示的。
//定义在 主页视图那的按钮title
let main = UINavigationController(rootViewController: mainView)
main.tabBarItem.title = "首页"
main.tabBarItem.setFAIcon(FAType.FAWhatsapp)
在外面定义这个main控制器,里面class MainViewController: UIViewController {。。。。 这样定义,那,这个控制器,是导航控制器,还是view控制器?这样在main里面定义的导航按钮,它就出现。
站长,一直在看你网站学习,现在遇到一个问题,就是在导航按钮返回的时候,按钮不出现。代码: let leftBarBtn = UIBarButtonItem(title: "返回", style: .Plain, target: self,
action: "backToPrevious")
self.navigationItem.leftBarButtonItem = leftBarBtn
,这个是viewcontroller,这个不显示。
不知道为什么没有成功