我的头发在这里撕裂了。已经阅读了许多描述如何解决这个问题的例子,但没有一个帮助我摆脱这个问题。
在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'
Touch Up Inside使用buttonPressed链接到文件的所有者。
已经下载了其他示例代码并且工作正常。我的项目和笔尖的设置与其他示例代码完全相同。
还没知道哪里开始尝试调试它。
有人帮忙吗?
答案 0 :(得分:5)
我有同样的问题。这是因为您的ViewController位于TabBarController下,在其下的View Controller中,您将NIB名称设置为Contact,但未在标识窗格中将Class设置为Contact。
答案 1 :(得分:1)
在Interface Builder中,您需要告诉它File类的所有者是什么类。单击“文件所有者”图标,转到检查器中的“身份”窗格(末尾的“i”图标),然后将“类”更改为“联系人”。
答案 2 :(得分:0)
您确定要粘贴正确的代码吗?您的Contact.m应包含一个包含实现的@implementation
块,而不是包含定义的@interface
块
Contact.m:
#import "Contact.h"
@implementation Contact
- (IBAction)buttonPressed:(id)sender
{
NSLog(@"buttonPressed");
}
@end
答案 3 :(得分:0)
刚刚创建了一个全新的项目,除了UIView和按钮之外什么都没有,它仍在发生
这让我觉得你没有把事情做好。如果这是应用程序nib文件,并且它只包含UIView
,则文件所有者将成为您的应用程序委托,无论您将文件所有者的类型设置为IB。
尝试以下方法:
在您的nib文件中创建Contact
的实例:拖动UIViewController
对象,并将其类设置为Contact
。
将视图和按钮连接到Contact
实例。
如果有效,请告诉我们:)