无法为UIButton添加目标 - 无法识别的选择器发送到实例,尽管方法在同一个类中

时间:2014-09-06 20:22:04

标签: ios objective-c uibutton selector

我在Objective-C iOS类中有一个名为StickerClass的UIButton。该类有一个名为'theView'的UIButton的公共实例。在StickerClass的构造函数中,我使用以下命令设置初始属性,例如框架,图层属性和子视图,以及点击时的目标:

[theView addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside];

有一个名为TopViewController的顶级类,它创建一个StickerClass实例,然后使用对变量theView(StickerClass实例中的UIButton)的公共访问,将按钮添加到TopViewController(使用{{1 }})。

回到StickerClass,我有这个方法:

[self.view addSubview:[myInstance theView]]

在标题中,我在@end之前有签名:

- (void)aMethod:(UIButton*)button {
    NSLog(@"Do some stuff...");
}

但是当我单击该按钮时,由于无法识别选择器而引发SIGABRT错误。错误是:

- (void)aMethod:(UIButton*)button;

有人知道为什么会这样吗?我想知道我是否错误地设置了目标,即因为它是自己试图在TopViewController中调用一个名为aMethod而不是StickerClass的方法(并通过将方法和它的签名添加到具有类似NSLog的TopViewController来测试它 - 仍然犯同样的错误)。任何想法都非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

错误似乎源于在构造函数中使用addTarget:action:forControlEvents:。如何创建一个单独的方法来将目标添加到StickerClass实例

-(void)addButtonTarget {
    [self.theView addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside];
}

并在创建StickerClass实例后立即在TopViewController中调用此方法。