2009-08-31 64 views
3

我在这里撕掉我的头发。阅读了很多描述如何解决这个问题的例子,但没有人帮助我摆脱了这个问题。NSInvalidArgumentException

在UIView链接到IBAction上有一个简单的按钮。

代码是这样的......

Contact.h

#import <UIKit/UIKit.h> 

@interface Contact : UIViewController { 
} 

-(IBAction)buttonPressed:(id)sender; 

@end 

Contact.m

#import "Contact.h" 

@implementation Contact 

- (IBAction)buttonPressed:(id)sender 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Button Pressed" message:@"You pressed the button" delegate:nil cancelButtonTitle:@"Yep, I did." otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

不断收到此错误信息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController buttonPressed:]: unrecognized selector sent to instance 0xd1d5f0' 

触摸的内心链接到该文件所有者使用buttonPressed。

已经下载了其他示例代码,它们工作正常。我的项目和笔尖的设置与其他示例代码完全相同。

还没有一个线索,甚至开始尝试和调试。

任何帮助?

+0

代码看起来像什么来建立TouchUp事件回调? – fbrereto 2009-08-31 18:01:17

回答

5

我有此相同的问题。这是因为您的ViewController位于TabBarController下,并且在其下的View Controller中,您将NIB名称设置为联系人,但未在身份窗格中将类设置为联系人。

+1

是的,这是它:) – 2009-09-04 20:46:04

+0

同样的问题。我希望我能投票更多。 – Dave 2011-03-13 00:31:14

0

你确定你粘贴了正确的代码吗?你Contact.m应该包含含有实施@implementation块,包含定义

Contact.m不是@interface块:

#import "Contact.h" 

@implementation Contact 

- (IBAction)buttonPressed:(id)sender 
{ 
    NSLog(@"buttonPressed"); 
} 

@end 
+0

哎呀,你是对的。现在已经粘贴它,因为它应该是:) – 2009-08-31 18:02:34

+0

上午也构建一个全新的项目从一个按钮和一个IBAction,没有其他代码,它仍然给我同样的头痛:( – 2009-08-31 18:03:20

1

在Interface Builder中,你需要告诉它什么类文件的所有者是。单击“文件所有者”图标,转到检查器中的“身份”窗格(最后的“我”图标),然后将类更改为联系人。

+0

嗨,我已经做到了。另外,只是创建了一个全新的项目,除了UIView和一个按钮之外,它里面没有任何东西,它仍然在发生:( – 2009-08-31 18:09:12

+0

你确定*?这部分错误:''*** - [UIViewController buttonPressed: ]:无法识别的选择器发送到实例0xd1d5f0''告诉你,一个UIViewController实例正在接收消息,而不是一个联系人实例 – iKenndac 2009-08-31 18:13:12

+0

+1我认为这是正确的答案 – 2009-08-31 18:31:37

0

just created a brand new project with nothing inside it other than a UIView and a button and it is still happening

这让我觉得你并没有很好地设置。如果这是应用程序nib文件,并且它只包含UIView,则文件的所有者将成为您的应用程序委托,而不管您将文件所有者的类型设置为IB。

尝试以下操作:

  1. 在你的笔尖文件中创建的Contact一个实例:在UIViewController对象拖动和它的类设置为Contact

  2. 连线视图和按钮直到您的Contact实例。

  3. 让我们知道,如果工程:)

+0

创建一个新的项目,它工作正常。认为这可能是由于它是从TabBarController加载的视图这一事实。 NIB本身是使用正确的IBAction和类,但我似乎无法确定'无法识别的选择器'被发送到哪里。 感谢所有人的帮助,我会士兵,直到我发现它是我做错了什么:) – 2009-08-31 23:50:25