Pressing UIButton results in Unrecognized Selector error

不羁的心 提交于 2019-11-29 17:04:51

Change

@selector(toggleEdit)

to

@selector(toggleEdit:)

The correct name for your selector is

@selector(toggleEdit:)

Without the : it would look for a method with this signature:

-(void) toggleEdit  // No parameters
{
}

When you actually have declared:

-(void) toggleEdit:(id)sender
{
}

For anyone else stumbling across this, you can also receive those "unrecognized selector sent to instance 0x..." errors when you no longer own something and the statement is pointing to some junk address in memory.

should be:

-(IBAction) toggleEdit:(id)sender {}

and

@selector(toggleEdit:)
Nikunj Jadav

Try:

UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
target:self action:@selector(toggleEdit) forControlEvents:UIControlEventTouchUpInside];

The method you're trying to use takes an argument, which means that it has a colon in its name -- the colon is actually part of the name. You need to include that colon when you get the selector:

@selector(toggleEdit:)

Refer to the Message Syntax section of The Objective-C Programming Language:

A selector name includes all the parts of the name, including the colons, so the selector in the preceding example is named setOriginX:y:. It has two colons, because it takes two parameters. The selector name does not, however, include anything else, such as return type or parameter types.

If you are using a storyboard. Sometimes it helps to remove the button from the storyboard, and put a new button, and make the necessary connections.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!