我知道无法识别的实例消息选择器很常见,但我似乎无法找到导致它在我的项目中的原因。 当点击特定按钮时,我试图基本上从一个控制器转到另一个控制器。我在故事板中定义了segue。然而,按钮不是在故事板中创建的,按钮是在视图控制器中以编程方式创建的,然后由我试图从中控制的控制器继承。这是我正在尝试做的代码:首先,这是我的ButtonViewController.m的一部分,它有按钮,我继承了这个控制器
UIButton *EButton=[UIButton buttonWithType:UIButtonTypeCustom];
[EButton setFrame:CGRectMake(0, 450, 106, 60)];
[EButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
[EButton setImage:[UIImage imageNamed:@"test1.png"] forState:UIControlStateNormal];
[EButton setImage:[UIImage imageNamed:@"test2.png"] forState:UIControlStateHighlighted];
[EButton setEnabled:YES];
[EButton addTarget:self action:@selector(EButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:EButton];
-(IBAction)EButtonPressed:(id)sender
{
[self performSegueWithIdentifier:@"WorldtoE" sender:self];
}
现在,我在WorldViewController中继承了这个ButtonViewController.m。 (原因是,我需要在我的应用程序中的不同控制器中使用此按钮,并且我希望只在需要时进行一次更改)。现在,当我运行应用程序时,按钮被创建完美,但是一旦我点击它,我就会收到此错误:由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [WorldViewController EButtonPressed]:无法识别的选择器发送到实例 我甚至尝试在我的WorldViewController .h文件中定义 - (IBAction)EButtonPressed:(id)发送者,并且还尝试在我的.m文件中包含整个ibaction函数,但是当我点击按钮时我仍然得到相同的NSInvalidArgumentexception。我究竟做错了什么?是的,我在故事板中给了segue相同的标题。
答案 0 :(得分:3)
替换行:
[EButton addTarget:self action:@selector(EButtonPressed) forControlEvents:UIControlEventTouchUpInside];
为:
[EButton addTarget:self action:@selector(EButtonPressed:) forControlEvents:UIControlEventTouchUpInside];