以编程方式在Swift中添加UIBarButtonItem动作

问题描述:

我试图通过编程方式将一个动作连接到Swift中的UIBarButtonItem,没有任何Storyboard。由于我使用不具有构造函数与库中的图标创建的UIBarButtonItem外部库(Font_Awesome_Swift以编程方式在Swift中添加UIBarButtonItem动作

var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action: "sayHello") 

我不能做这种方式。所以我这样做:

let rightButtonItem = UIBarButtonItem() 
rightButtonItem.FAIcon = FAType.FACamera 

然后,我想能够附加一个动作到这个UIBarButtonItem。我发现在另一个答案,这个解决方案:

UIApplication.sharedApplication().sendAction(barButtonItem.action, to: barButtonItem.target, from: self, forEvent: nil) 

但我真的不明白如何使用它。我应该在哪里指出选择者的名字?

谢谢!

好吧,只是发表了这个问题之后,我发现了一个简单的方法来解决我的问题。随着“默认”的UIBarButtonItem构造函数和下面的代码:

let rightButtonItem = UIBarButtonItem(title: "Camera", style: .Plain, target: self, action: "launchCamera") 
rightButtonItem.FAIcon = FAType.Camera 
+0

还有一个选项可以将操作设置为UIBarButtonItem,rightButtonItem.actiion =“sayHello”// //选择器名称 – HardikDG

例如我写这篇文章的代码为的UIBarButtonItem:

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

和选择器代码是:

func shareTapped() { 

//   for share in Social media or Save in local 
//  let vc = UIActivityViewController(activityItems: [imageView.image!], applicationActivities: []) 
//  vc.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem 
//  present(vc, animated: true) 


     // this line its for share photo in facebook or twitter 
     if let vc = SLComposeViewController(forServiceType: SLServiceTypeTwitter) { 
      vc.setInitialText("Look at this great picture!") 
      vc.add(imageView.image!) 
      vc.add(URL(string: "http://www.photolib.noaa.gov/nssl")) 
      present(vc, animated: true) 
     } 
    } 

和i的使用图像我的应用程序,因为这个我使用图像view.image

Swift使添加一个行动,UIBarButtonItem容易为我们。

let rightBarButton = UIBarButtonItem() 
// add an action 
rightBarButton.action = #selector(yourAction)