按UIButton会导致无法识别的选择器错误

Seb*_*ian 1 cocoa-touch objective-c selector ios

我有一个按钮,UIView就像这样创建:

UIBarButtonItem *editButton = 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                      target:self       
                                                      action:@selector(toggleEdit)];
self.navigationItem.rightBarButtonItem = editButton;
[editButton release];
Run Code Online (Sandbox Code Playgroud)

这是动作方法:

-(void) toggleEdit:(id)sender
{
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

2011-09-02 15:27:13.362 blubb [15006:207] - [DatabaseSelectionViewController toggleEdit]:无法识别的选择器发送到实例0x5a29d80 2011-09-02 15:27:13.365 blubb [15006:207] *终止应用程序由于未被捕获异常'NSInvalidArgumentException',原因:' - [DatabaseSelectionViewController toggleEdit]:无法识别的选择器发送到实例0x5a29d80'

为什么会这样?

apo*_*che 7

选择器的正确名称是

@selector(toggleEdit:)
Run Code Online (Sandbox Code Playgroud)

没有:它会寻找具有此签名的方法:

-(void) toggleEdit  // No parameters
{
}
Run Code Online (Sandbox Code Playgroud)

当你实际宣布:

-(void) toggleEdit:(id)sender
{
}
Run Code Online (Sandbox Code Playgroud)