在swift中以编程方式按UIBarButtonItem?

时间:2015-07-16 19:36:21

标签: ios swift cocoa-touch uikit uibarbuttonitem

我有一个条形按钮项目,我想以编程方式按,基本上相当于

buttonObj.sendActionsForControlEvents(UIControlEvents.TouchUpInside)

但作为条形按钮项目

编辑:我忘了提及,我不能简单地调用按钮的动作方法,因为我正在使用SWRevealViewController库并在条形按钮项上使用它们的"revealToggle:"动作,我不是确定如何自己打电话。

3 个答案:

答案 0 :(得分:11)

如果你看一下Objective-C等效问题,你会看到使用performSelector:的实现。在Swift中,您无权访问此方法。以下是Apple发布的官方消息:

  

在Swift中不导入performSelector:方法和相关的选择器调用方法,因为它们本质上是不安全的。

您可以使用UIApplication.sendAction(_:to:from:forEvent:)来解决此问题。从技术上讲,你也应该在Objective-C中这样做。

假设您的UIBarButtonItem定义为barButtonItem。以下代码可以满足您的要求。

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

答案 1 :(得分:4)

Swift 4(和3)语法

UIApplication.shared.sendAction(barButtonItem.action!, to: barButtonItem.target, from: self, for: nil)

答案 2 :(得分:0)

Swift 5 中工作:

_ = button.target?.perform(button.action, with: nil)