来自UIBarButtonItem的“无法识别的选择器发送到实例”

时间:2015-09-20 22:43:24

标签: ios swift uiviewcontroller selector

我知道这个问题已被多次询问过。但我似乎无法克服这个错误。我使用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'

1 个答案:

答案 0 :(得分:3)

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

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

您需要将loadEditView方法更改为仅使用一个参数 - 发件人。按钮处理程序也无法获取第二个animated参数。