参数化的UIButton动作选择器用于另一个类中的方法?

时间:2011-04-10 08:10:13

标签: iphone objective-c cocoa-touch uibutton

这在很大程度上是一个句法问题。如何设置UIButton操作选择器来调用不同类的方法?我已经完成了类的#import,我需要使用按钮调用其方法,并且我对部分了解按钮代码应该是什么样如下:

    UIButton *btnSplash = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnSplash.frame = CGRectMake(250, 270, 180, 30);
    [btnSplash setTitle:@"Menu" forState:UIControlStateNormal];
    [btnSplash addTarget:self action:@selector([CLASS METHOD:PARAMETER]) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:btnSplash];

但是,我收到以下错误:

  

预期':'在'''令牌

之前      @selector

中缺少

方法名称

我在参考库中看到的示例代码调用了本地方法,因此我试图概括并且我的尝试迄今为止都没有用。

由于

1 个答案:

答案 0 :(得分:10)

选择器是方法名称的表示,无论哪个类或类别实现它。

假设您有一个名为AnotherClass的类,它实现了方法- (void)doSomething:(id)sender。相应的选择器为doSomething:,代码为@selector(doSomething:)。如果您希望按钮操作调用该方法,则需要具有AnotherClass的实例 - 并且此实例是操作目标,而不是self。因此,您的代码应该具有:

#import "AnotherClass.h"

AnotherClass *instanceOfAnotherClass;
// assign an instance to instanceOfAnotherClass

UIButton *btnSplash = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnSplash.frame = CGRectMake(250, 270, 180, 30);
[btnSplash setTitle:@"Menu" forState:UIControlStateNormal];

[btnSplash addTarget:instanceOfAnotherClass
              action:@selector(doSomething:)
    forControlEvents:UIControlEventTouchUpInside];

[self addSubview:btnSplash];