"unrecognized selector sent to instance" 来自 UIBarButtonItem

"unrecognized selector sent to instance" from UIBarButtonItem

我知道这个问题已经被问过很多次了。但我似乎无法克服这个错误。我使用 Objective C 在我的应用程序的先前版本中运行它。

以下两种方法都在同一个 UIViewController.

视图控制器也作为根视图控制器的引用,是 UINavigationController 的一部分。

func loadEditView(sender: AnyObject, animated: Bool = true) {
    var editViewController: EditViewController = EditViewController()
    // set some stuff up
    self.navigationController!.pushViewController(editViewController, animated: animated)
}

override func loadView() {
    super.loadView()

    var button = UIBarButtonItem(barButtonSystemItem: .Edit, target: self, action: Selector("loadEditView:"))
    self.navigationItem.rightBarButtonItem = button
}

错误信息是

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyApp.ScaleViewController loadEditView:]: unrecognized selector sent to instance 0x14d643d0'

您使用选择器 loadEditView: 设置了栏按钮项目。并不是名称表明它需要一个参数。

但是,您的实际 loadEditView 函数有两个参数。因此错误。

您需要将 loadEditView 方法更改为仅采用一个参数 - 发件人。没有办法让按钮处理程序也采用第二个 animated 参数。