2010-01-07 42 views
2

按下按钮时,我收到显示在下面的错误消息。我的“buttonPressed”方法中还没有任何代码,尽管我认为它没有任何关系。按下myButton时发生iPhone错误

错误消息:“投掷 'NSException' 方案接收信号的一个实例后终止称为: “SIGABRT”

的UIButton * myButton的= [UIButton的buttonWithType:UIButtonTypeCustom];

[myButton的setImage: [UIImage的imageNamed:@ “ButtonStandard.png”] forState:UIControlStateNormal]; [myButton的setImage:[UIImage的imageNamed:@ “ButtonSelected.png”] forState:UIControlStateSelected]; [myButton的setShowsTouchWhenHighlighted:YES];

myButton.frame = CGRectMake(0.0, 380.0, 320.0, 100.0); 
[myButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
[contentView addSubview:myButton]; 

任何帮助将是伟大的。

+0

空难后,打开控制台(的运行菜单上的一个选项)。它应该告诉你什么是例外。 – 2010-01-07 01:18:16

回答

2

更改@selector(buttonPressed)@selector(buttonPressed:)(注意最后的冒号),改变方法本身:

-(void)buttonPressed:(id)sender { 
    /* sender will be the UIButton. */ 
} 
+0

可以使用和不使用参数来声明操作。 59: – 2010-01-07 01:17:42

+0

我以后再寻找 2010-01-06 20收到此错误47.704 SHS [3844:207] *** - [SHSViewController buttonPressed:]:无法识别的选择发送到实例0x11aa30 让我感动我的方法SHSViewController和@selector(buttonPressed :)现在工作正常。我不知道为什么期望该方法来自SHSViewController而不是它所在的导入类?有人知道吗? 感谢你们两位,你们每个人都以不同的方式提供帮助! – I00I 2010-01-07 02:04:45

+0

如果上面的代码片段是SHSViewController的一部分,那么在addTarget:action:forControlEvents:方法调用中对self的引用引用SHSViewController对象,而不是按钮对象。如果上面的代码在SHSViewController中是* not *,那么您的内存泄漏。 在Objective-C的说法中,addTarget:action:forControlEvents:消息要求对象myButton在触发指定控件事件时将buttonPressed:消息发送给对象self。因此,我必须接受buttonPressed:消息。这里,self是创建按钮SHSViewController的对象。 – 2010-01-07 06:41:51