在swift中以编程方式按UIBarButtonItem?

Col*_*ole 7 cocoa-touch uikit uibarbuttonitem ios swift

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

buttonObj.sendActionsForControlEvents(UIControlEvents.TouchUpInside)
Run Code Online (Sandbox Code Playgroud)

但作为一个条形按钮项目

编辑:我忘了提,我不能简单地调用按钮的动作方法,因为我正在使用SWRevealViewController库并"revealToggle:"在条形按钮项上使用它们的动作,我不知道如何自己调用.

Sha*_*ngh 14

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

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

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

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

UIApplication.sharedApplication().sendAction(barButtonItem.action, to: barButtonItem.target, from: self, forEvent: nil)
Run Code Online (Sandbox Code Playgroud)


Jim*_*Jim 8

Swift 4(和3)语法

UIApplication.shared.sendAction(barButtonItem.action!, to: barButtonItem.target, from: self, for: nil)
Run Code Online (Sandbox Code Playgroud)


ate*_*kov 6

在Swift 5中工作:

_ = button.target?.perform(button.action, with: nil)
Run Code Online (Sandbox Code Playgroud)