【问题标题】:Add UIBarButtonItem action in Swift programmatically以编程方式在 Swift 中添加 UIBarButtonItem 操作
【发布时间】:2016-02-29 15:56:41
【问题描述】:

我正在尝试以编程方式在 Swift 中将操作连接到我的 UIBarButtonItem,而无需任何 Storyboard。

我不能这样做:

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

因为我使用了一个外部库 (Font_Awesome_Swift),它没有构造函数来创建带有库中图标的 UIBarButtonItem。所以我是这样做的:

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

然后,我希望能够将一个动作附加到这个 UIBarButtonItem。我在另一个答案中找到了这个解决方案:

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

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

谢谢!

【问题讨论】:

    标签: ios swift swift2 uibarbuttonitem


    【解决方案1】:

    Swift 让我们可以轻松地向 UIBarButtonItem 添加操作。

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

    【讨论】:

    • 你也应该添加rightBarButton.target = self
    【解决方案2】:

    好的,在发布这个问题之后,我找到了一个简单的方法来解决我的问题......使用“默认” UIBarButtonItem 构造函数和以下代码:

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

    【讨论】:

    • 还有一个选项可以给UIBarButtonItem设置action,rightButtonItem.action = "sayHello" //selector name
    【解决方案3】:

    例如,我为 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)
            }
        }
    

    我在我的应用程序中使用图像,因此我使用图像 view.image

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多