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

Iphone Objective-C:在addTarget:action:forControlEvents中从另一个类调用方法,iphone,objective-c,events,uibutton,Iphone,Objective C,Events,Uibutton,我的问题是: 我想在UIButton上分配一个事件。我使用这种方法: -(void)addTarget:(id)target 动作:(SEL)动作 forControlEvents:(uicontrol事件)controlEvents 像这样: [newsButton addTarget:self action:@selector(myEvent2) forControlEvents:UIControlEventTouchUpInside]; [新闻按钮添加目标:自我 操作:@选择器(m

我的问题是:

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


-(void)addTarget:(id)target
动作:(SEL)动作
forControlEvents:(uicontrol事件)controlEvents

像这样:

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

[新闻按钮添加目标:自我
操作:@选择器(myEvent2)
forControlEvents:UIControlEventTouchUpInside];

新闻按钮是我的UIButton

如果myEvent2属于我所在的类,那么代码编译和执行都很好,每个人都很高兴

但是如果myEvent2属于另一个类,我就不能成功地执行它(项目编译得很好)

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

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

MyViewController*测试=[[MyViewController alloc]init];
[新闻按钮添加目标:自我
操作:@selector([test myEvent2])
forControlEvents:UIControlEventTouchUpInside];

但我有以下错误:

“[”标记之前应为“:”

@selector中缺少方法名称

有人能解决我的问题吗


提前感谢:)

您需要将
addTarget:self
更改为
addTarget:test
另一个选项是使用重定向方法:

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


当我将目标从self改为:test时,编译器没有识别它,因为它不是一个对象。目标需要是一个对象,而test似乎是一个类。
- (void)myRedirectHandler {
    [ test myEvent2 ];
}
[newsButton addTarget:self
    action:@selector(myRedirectHandler)
    forControlEvents:UIControlEventTouchUpInside];