0

我在 iOS iPad 应用程序中遇到了一个奇怪的问题。当我将 a 映射UIButtonIBAction带有修饰的内部事件时,我的应用程序崩溃了。我在控制台中遇到的错误就像 Unrecognized selector NSInvalidArgumentException.

顺便说一下,我项目中的所有视图控制器都有同样的问题。视图控制器映射到标签栏控制器。

我通过从另一个项目中拖放所有文件来创建这个项目。拖动的文件正确放置在当前项目中,没有问题。这会导致问题吗?

我无法弄清楚出了什么问题。

谢谢

4

5 回答 5

1

只需右键单击 xib 中的按钮并检查您的按钮是否只有一个连接,如果您有多个连接,请删除不需要的连接。

在此处输入图像描述

于 2013-01-02T14:23:12.493 回答
1

UIViewController您是否在界面生成器中设置了自定义子类的类?

在此处输入图像描述

于 2013-01-02T14:24:16.363 回答
1

如果在应用Gabriele PetronellaRajneesh071的解决方案后问题仍然存在,那么可能会出现一个小错误:

如果您正在使用:

[btn addTarget:self action:@selector(buttonTouched:)  forControlEvents:UIControlEventTouchUpInside];

那么buttonTouched方法必须是(IBAction).

如果buttonTouched方法是类型,(void)那么只需:从您的方法调用中删除它。

我知道这是一件简单的事情,但它可能会导致崩溃。

于 2013-01-02T14:33:23.597 回答
0

我会检查以确保您有 UIButton 引用的无法识别的方法:

1) .h 中列出的方法签名是否与 .m 文件中列出的方法签名一致?2) 调用方法时是否传递了任何预期的参数?3) 该方法在您的 .h 和 .m 文件中是否始终列为类 (+) 或实例 (-) 方法?

我知道您说您复制了文件,但是您是否进行了测试以确保您复制的应用程序也可以正常工作?其他应用程序是否将方法连接到按钮?复制后你有没有改变任何东西?

干杯

于 2013-01-02T14:28:47.700 回答
0

感谢您的回答。我已经解决了这个问题。

实际问题:

  1. 我的项目是使用 ARC。
  2. 实际上,我通过单击以下按钮将其添加为子视图,从而从一个视图导航到另一个视图IBAction

    -(IBAction)signInAndGoToFrameworkView :(id)sender{  
    
    MyViewController myViewController  = [[MyViewController alloc] initWithNibName:@"MyViewController " bundle:nil];
    [self.view addSubview:myViewController.view];
    
    }
    

3. 由于该项目使用 ARC,因此对象 myViewController 被释放,因为这是一个局部变量。所以当我按下后退按钮时

   [self.view removeFromSuperview]; 

该应用程序崩溃了。

解决方案:

所以当我刚刚MyViewController myViewController在 .h 文件中声明并且还给出了@propertyand @synthesize. 然后换了IBActionwith,

   -(IBAction)signInAndGoToFrameworkView :(id)sender{  

    myViewController  = [[MyViewController alloc] initWithNibName:@"MyViewController " bundle:nil];
    [self.view addSubview:myViewController.view];

    }

现在问题解决了。

谢谢。

于 2013-01-03T14:05:51.007 回答