这在很大程度上是一个句法问题。如何设置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 中缺少方法名称
我在参考库中看到的示例代码调用了本地方法,因此我试图概括并且我的尝试迄今为止都没有用。
由于
答案 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];