Objective-C:在addTarget:action:forControlEvents中调用另一个类的方法

时间:2010-10-15 16:33:46

标签: iphone objective-c events uibutton

这是我的问题:

我想在UIButton上分配一个事件。我用这个方法:


- (void)addTarget:(id)target
action:(SEL)action
forControlEvents:(UIControlEvents)controlEvents

像这样:


[newsButton addTarget:self
action:@selector(myEvent2)
forControlEvents:UIControlEventTouchUpInside];

newsButton是我的UIButton。

如果myEvent2属于我所在的类,代码正在编译并执行正常,每个人都很高兴。

但是如果myEvent2属于另一个类,我没有成功执行它(项目编译得很好)。

我尝试以这种方式更改我的代码:


MyViewController* test = [[MyViewController alloc] init];
[newsButton addTarget:self
action:@selector([test myEvent2])
forControlEvents:UIControlEventTouchUpInside];

但我收到以下错误:

  

预期':'在'''令牌

之前      

@selector

中缺少方法名称

有人对我的问题有任何解决方案吗?

感谢提前:)

3 个答案:

答案 0 :(得分:8)

您需要将addTarget:self更改为addTarget:test

答案 1 :(得分:4)

MyViewController* test = [[MyViewController alloc] init];
[newsButton addTarget:test
    action:@selector(myEvent2)
    forControlEvents:UIControlEventTouchUpInside];

答案 2 :(得分:0)

另一种选择是使用重定向方法:

- (void)myRedirectHandler {
    [ test myEvent2 ];
}

...

[newsButton addTarget:self
    action:@selector(myRedirectHandler)
    forControlEvents:UIControlEventTouchUpInside];