如何在swift 3中以编程方式为barButtonItem设置操作?

这是我以前用过的,

var barButtonItem = UIBarButtonItem(image: backImgs, style: UIBarButtonItemStyle.plain, target: self, action: Selector("menuButtonTapped:")) 

但是Swift 3有一些语法更改。提前感谢。

例如: –

 navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped)) 

总结Swift 3中最常用的方法,用于向barButton添加动作。

  1. 巴布通与文本

     navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped)) 
  2. BarButton拥有自己的形象

     navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named:"add"), style: .plain, target: self, action: #selector(addTapped)) 
  3. BarButton与系统图像

     navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) 

如果有人使用customView

 barButtonItem.customView?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onBarButtonItemClicked))) 

适用于iOS 10.1的Swift 3上的一行代码:

 navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: nil) 

您只需要从Swift 3更改selector语法,您需要在函数调用中指定方法的第一个参数名称,因此请更改您的选择器。

 #selector(menuButtonTapped(sender:)) 

你的方法应该是这样的。

 func menuButtonTapped(sender: UIBarButtonItem) { } 
 let barButtonItem = UIBarButtonItem(image: UIImage(named: "backImgs"), style: .plain, target: self, action: #selector(menuButtonTapped)) // Adding button to navigation bar (rightBarButtonItem or leftBarButtonItem) self.navigationItem.rightBarButtonItem = barButtonItem // Private action @objc fileprivate func menuButtonTapped() { // body method here } 

为barbutton项创建扩展。

  extension UINavigationItem { func addSettingButtonOnRight(){ let button = UIButton(type: .Custom) button.setTitle("setting", forState: .Normal) button.titleLabel?.font = UIFont.systemFontOfSize(15.0) button.layer.cornerRadius = 5 button.backgroundColor = UIColor.grayColor() button.frame = CGRect(x: 0, y: 0, width: 100, height: 25) button.addTarget(self, action: #selector(gotSettingPage), forControlEvents: UIControlEvents.TouchUpInside) let barButton = UIBarButtonItem(customView: button) self.rightBarButtonItem = barButton } func gotSettingPage(){ } } 

并从viewDidLoad()调用它

  self.navigationItem.addSettingButtonOnRight() 

Swift 3中 ,您可以像这样添加UIBarButtonItem,

 let addButton = UIBarButtonItem(image:UIImage(named:"your_icon_name"), style:.plain, target:self, action:#selector(YourControllerName.buttonAction(_:))) addButton.tintColor = UIColor.white self.navigationItem.rightBarButtonItem = addButton 

并处理按钮动作,

 func buttonAction(_ sender: UIBarButtonItem) { } 

希望能帮助到你。

对于Swift 4,在viewDidLoad添加:

 navigationItem.rightBarButtonItem = UIBarButtonItem( barButtonSystemItem: UIBarButtonSystemItem.add, target: self, action: #selector(addTransaction) ) 

创建一个UIBarButtonItem:

 let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(LocationViewController.doneButtonClicked(_:))) 

添加到NavigationItem:

 self.navigationItem.rightBarButtonItem = rightButton 

相关function:

 func doneButtonClicked(_ button:UIBarButtonItem!){ print("Done clicked") }