'NSInvalidArgumentException'UIButton IBAction错误

时间:2010-04-02 01:18:22

标签: iphone interface-builder uibutton ibaction

我在视图中有一个拒绝工作的按钮。我已经从X-Code中使用了一个空白的默认视图应用程序,但是在我的应用程序中它都不会起作用,相反它会给我以下错误。

  

因未捕获而终止应用   例外   'NSInvalidArgumentException',原因:   '*** - [UIViewController showVicInfo:]:   无法识别的选择器发送到实例   0x3c084f0'

调试器也没有任何帮助。我已经确保我将按钮连接到文件的所有者(而不是相反)。以下是该操作的代码。我知道这不是警报视图,因为断点甚至没有到达那里。

about.h

    @interface about : UIViewController {

}

-(IBAction)showVicInfo:(id)sender;

about.m

-(IBAction)showVicInfo:(id)sender {
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for iFirelert to work." delegate:self cancelButtonTitle:@"OK, thanks" otherButtonTitles:nil];
    [myAlert show];
    [myAlert release];
}

更新:仅供参考我是如何创建按钮的,如果有帮助的话。

  1. 创建了新视图(文件>新文件> UIViewControllerSubclass w / XIB用于界面)
  2. 已添加 - (IBAction)showInfo:(id)sender;至about.h
  3. 已添加
  4. - (IBAction)showVicInfo:(id)sender {         UIAlertView * myAlert = [[UIAlertView alloc] initWithTitle:@“没有互联网 连接“消息:@”你需要一个 通过WiFi或网络连接 iFirelert的蜂窝网络 工作。“代表:自我 cancelButtonTitle:@“好的,谢谢” otherButtonTitles:无];         [myAlert show];         [myAlert release];     }到about.m
  5. 在Interface Builder中打开About.xib,将一个矩形按钮拖到视图
  6. 通过按住Ctrl键单击文件所有者属性的按钮(而不是相反的方式),将按钮连接到-showVicInfo操作。
  7. 检查文件所有者是否设置为“关于”类。
  8. 然后在X-Code中构建并运行失败。

    更新2:好的,我已经知道它必须是我现有项目中的设置或其他东西。我复制了两个类文件和XIB文件,它在另一个X-Code项目中工作,但按钮也是在现有应用程序中抛出相同的错误。

2 个答案:

答案 0 :(得分:2)

有同样的错误。问题是我发布了viewController。

AnswerStructureViewController* questionVC = [[AnswerStructureViewController alloc] initWithOpts:dict];
[window addSubview:questionVC.view];
[questionVC release];

如果你不释放它,一切都很好

答案 1 :(得分:1)

我认为Squeegy是对的,你的VC是一个普通的旧UIViewController并且不接受showVicInfo。

您是否在IB中为ViewController设置了类(command-4)?

或者如果你自己分配,你是这样做的吗?

vc = [UIViewController alloc];    // wrong class

当你应该这样做时:

vc = [about alloc];     

错误消息告诉您showVicInfo正被发送到0x3c084f0。检查您创建的视图控制器的地址(如上面“vc”中的值),如果它是您的答案的0x3c084f0。当然,下次的值可能会有所不同,但NSLog会在您创建它时将其与错误消息进行比较,以确定它所指的是什么。

还要检查IB中的按钮是否正确连接。如果选择按钮并转到“按钮连接”选项卡,则应该有连接。对于Touch Up Inside应连接到您的动作功能,在您的IB中它应该连接到showVicInfo:

相关问题