在 swift 中以编程方式按下 UIBarButtonItem?

Press UIBarButtonItem programmatically in swift?

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

buttonObj.sendActionsForControlEvents(UIControlEvents.TouchUpInside)

但作为栏按钮项

编辑:我忘了说,我不能简单地调用按钮的操作方法,因为我正在使用 SWRevealViewController 库并在条形按钮项目上使用它们的 "revealToggle:" 操作,我不知道怎么自己调用。

如果您查看 Objective-C 个等效问题,您会看到使用 performSelector: 的实现。在 Swift 中,您无权访问此方法。这是 Apple 的官方说法:

The performSelector: method and related selector-invoking methods are not imported in Swift because they are inherently unsafe.

您可以改用 UIApplication.sendAction(_:to:from:forEvent:) 来解决这个问题。从技术上讲,您也应该在 Objective-C 中执行此操作。

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

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

Swift 4(和 3)句法

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

工作于Swift 5:

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