这是我的问题:
我想在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
中缺少方法名称
有人对我的问题有任何解决方案吗?
感谢提前:)
答案 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];