我在iOS iPad应用程序中遇到了一个奇怪的问题。当我将UIButton
映射到具有修饰内部事件的IBAction
时,我的应用程序崩溃了。我在控制台中遇到的错误就像
Unrecognized selector NSInvalidArgumentException
。
顺便说一下,我项目中的所有视图控制器都有同样的问题。视图控制器映射到选项卡栏控制器。
我通过拖放另一个项目中的所有文件创建了这个项目。拖动的文件正确放置在当前项目中,没问题。这会引起问题吗?
我无法弄清楚出了什么问题。
由于
答案 0 :(得分:1)
只需右键单击xib中的按钮,检查您的按钮只有一个连接,如果您有多个连接,请删除不需要的连接。
答案 1 :(得分:1)
您是否在界面构建器中设置了自定义UIViewController
子类的类?
答案 2 :(得分:1)
如果问题在 Gabriele Petronella 和 Rajneesh071 应用解决方案后仍然存在,那么可能会出现一个小错误:
如果您正在使用:
[btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
然后buttonTouched
方法必须为(IBAction)
。
如果buttonTouched
方法类型为(void)
,则只需从方法调用中删除 :
。
我知道这很简单,但可能会导致崩溃。
答案 3 :(得分:0)
我会检查以确保你有UIButton引用的无法识别的方法:
1).h。中列出的方法签名是否与.m文件中列出的方法签名一致? 2)当你调用它们方法时传递的任何预期参数? 3)在.h和.m文件中一致列为类(+)或实例( - )方法的方法是什么?
我知道你说你复制了文件,但是你测试过以确保你复制的应用程序也有效吗?其他应用程序是否将方法连接到按钮?你复制之后是否更改了任何内容?
干杯
答案 4 :(得分:0)
感谢您的回答。我已经解决了这个问题。
实际问题:
实际上我是通过点击IBAction
按钮将其添加为子视图,从一个视图导航到另一个视图到另一个视图,
-(IBAction)signInAndGoToFrameworkView :(id)sender{
MyViewController myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController " bundle:nil];
[self.view addSubview:myViewController.view];
}
3。由于项目是使用ARC,因此myViewController对象被释放,因为这是一个局部变量。所以当我按下后退按钮
时 [self.view removeFromSuperview];
该应用程序正在崩溃。
<强>解决方案:强>
所以当我刚刚在.h文件中声明MyViewController myViewController
并且还给出了@property
和@synthesize
时。然后使用,
IBAction
-(IBAction)signInAndGoToFrameworkView :(id)sender{
myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController " bundle:nil];
[self.view addSubview:myViewController.view];
}
现在问题解决了。
感谢。