我正在使用Xcode 4.3.2。
我是Xcode的新手。我正在构建一个应用程序,必须在单击按钮时将其更改为不同的视图。我的文件是:AppDelegate.h / .m,GreenViewController.h / .m,SwitchViewController.h / .m,GreenView.xib-我没有使用情节提要,但是我的项目要求我不要使用它们(向后兼容性问题)。
这是我的问题(似乎很简单):单击UIButton(放置在GreenView.xib中)时,我尝试打印到控制台。这是我的GreenViewController.h代码
#import <UIKit/UIKit.h>
@interface GreenViewController : UIViewController
- (IBAction)switchViews:(id)sender;
@end
这是我的GreenViewController.m代码(已弃用):
#import "GreenViewController.h"
@implementation GreenViewController
- (IBAction) switchViews:(id)sender {
NSLog(@"Button Pressed!");
}
GreenView.xib的所有者是GreenViewController。
由于某些原因,仅当按下UIButton(在GreenView.xib中)时才出现错误:
2012-10-09 18:07:38.490 MyViewSwitcher[8655:f803] -[SwitchViewController switchViews:]: unrecognized selector sent to instance 0x688a660
2012-10-09 18:07:38.492 MyViewSwitcher[8655:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SwitchViewController switchViews:]: unrecognized selector sent to instance 0x688a660'
看来SwitchViewController希望从方法“ switchViews”中获得某些东西,但“ switchViews”仅在GreenViewController中列出。以前,我在SwitchViewController中有“ switchViews”,但是我删除了与该方法和所有连接相对应的所有代码。再次,我再次检查了GreenViewController中的“ switchViews”是否已连接到GreenView.xib中的UIButton。我已经清理并重建了项目,但仍然收到此错误。
谢谢你的帮助!
最佳答案
您的错误是在switchViews:
实例上调用SwitchViewController
方法。而且,由于对于类switchViews:
没有SwitchViewController
的定义(因为已将其删除),因此它不知道该怎么办,然后崩溃。
讨厌告诉您,但是您的按钮已连接到switchViews:
的SwitchViewController
方法。您说:“我已经仔细检查了GreenViewController中的'switchViews'是否已连接到GreenView.xib中找到的UIButton”。好吧,是的,是从崩溃中撤出的。但是您确定它已连接到switchViews:
实例的GreenViewController
功能吗?您如何查看此信息?
我建议删除连接检查器中与UIButton的所有连接。然后将其重新连接到视图控制器(您说这是GreenViewController)。然后,它应该显示IBAction列表,该列表只能是switchViews:
方法。
如果您这样做,它仍然不起作用。尝试删除按钮并重新制作,然后重新连接。
关于iphone - Xcode:单击按钮会导致NSInvalidArgumentException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12810733/