“#selector”的参数不能引用全局函数 (Swift)

Argument of '#selector' cannot refer to global function (Swift)

我正在尝试以编程方式将 UIBarButtonItem 添加到我的导航栏(有效),但是我无法执行该操作。我做错了什么?

我在viewDidLoad下有如下代码:

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "visualise"), style: .plain, target: self, action: #selector(visualise(sender:)))

并且在 VC class 之外声明了以下函数:

func visualise(sender: UIBarButtonItem) {
// stuff to do once the button is tapped
}

我读了一些回答说函数不能是本地的,但这似乎没有帮助。

函数不能是“全局的”。这就是错误所说的。

如果您的函数是在视图控制器之外声明的,那么它就是全局的。

您只能从选择器调用实例(或静态)函数。

最简单的更改是将您的函数放在视图控制器中。