【问题标题】:unrecognized selector sent to instance error when a button is clicked单击按钮时无法识别的选择器发送到实例错误
【发布时间】:2014-08-26 15:25:27
【问题描述】:

我不完全确定为什么会收到此错误。当我单击 FirstViewController 上的按钮时会发生这种情况:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FirstViewController 1ButtonPress:]: unrecognized selector sent to instance 0x10954bbd0'

我的 FirstViewController 有一个按钮 (1ButtonPress),它与另一个具有嵌入 NavigationController 的 ViewController 执行转场(所以在我的故事板中,转场是从 FirstViewController 到 NavigationController)。在这个 segue 中,一些数据通过以下方式传输到另一个 ViewController:
First.m

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"abc"]) {
            UINavigationController *navController = [segue destinationViewController];
            SecondViewController *BVC = (SecondViewController *)(navController.topViewController);
        BVC.BLLImg = [UIImage imageNamed:@"SomeImage.jpg"];
        BVC.BLLTitle = @"SomeText";
    }

}

segue 在情节提要中具有标识符“abc”。环顾四周,我认为这与不正确的课程有关,但第一次检查时一切看起来都很好。
我会收到此错误的任何其他原因?

【问题讨论】:

  • 你能展示一下1ButtonPress的实现吗

标签: ios objective-c uibutton unrecognized-selector


【解决方案1】:

右键单击 Storyboard 中的 1ButtonPress 按钮。删除对1ButtonPress: 的操作。

【讨论】:

    【解决方案2】:

    让我们检查一下您看到的错误。它说一个无法识别的选择器被发送到FirstViewController 的实例。

    根据我的推断,您将按钮连接到视图控制器,然后从视图控制器中删除了实现,假设它会删除您之前创建的从按钮到视图控制器的连接。不幸的是,它不是这样工作的。您还需要从按钮中删除连接。

    为此,请右键单击情节提要中的按钮,然后删除显示1ButtonPress: 的连接。

    旁注:对于初学者来说,你做的太多了。请尝试一步一步地穿越可可世界。另外,请阅读this article,了解如何以更易于理解的方式命名您的方法和变量。

    【讨论】:

    • 就是这样,在那之后我最终得到另一个错误:“这个类不符合键 givenName 的键值编码”但我意识到我已经更改了插座的名称而没有重新在情节提要中链接它。如此修复,一切都很好。
    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多