Iphone Objective-C:在addTarget:action:forControlEvents中从另一个类调用方法
我的问题是: 我想在UIButton上分配一个事件。我使用这种方法: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
-(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];