简体   繁体   English

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

[英]Objective-C : Call a method from another class in addTarget:action:forControlEvents

Here is my problem : 这是我的问题:

I want to assign an Event on an UIButton. 我想在UIButton上分配一个事件。 I use this method : 我用这个方法:


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

like this : 像这样 :


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

newsButton is my UIButton. newsButton是我的UIButton。

If myEvent2 belongs to the class where I am, the code is compiling and executing fine, everybody is happy. 如果myEvent2属于我所在的类,代码正在编译并执行正常,每个人都很高兴。

But if myEvent2 belongs to another class I don't succeed to execute it (the project compiles fine). 但是如果myEvent2属于另一个类,我就没有成功执行它(项目编译得很好)。

I tried out to change my code in that way : 我尝试以这种方式更改我的代码:


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

but I get the followings errors : 但我得到以下错误:

Expected ':' before '[' token 在'''令牌之前预期':'

Method name missing in @selector @selector中缺少方法名称

Does someone have any solution to my problem ? 有人对我的问题有任何解决方案吗?

Thanks by advance :) 先谢谢:)

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

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

Another option is to use a redirection method: 另一种选择是使用重定向方法:

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

... ...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 UIControl-addTarget:操作:forControlEvents不调用选择器内的方法 - UIControl - addTarget: action: forControlEvents doesn't call the method inside selector addTarget:action:forControlEvents:来自UITableViewCell - addTarget:action:forControlEvents: from a UITableViewCell UIButton 块相当于 addTarget:action:forControlEvents: 方法? - UIButton block equivalent to addTarget:action:forControlEvents: method? 将参数传递给 addTarget:action:forControlEvents - Passing parameters to addTarget:action:forControlEvents 来自另一个类的objective-c调用函数 - objective-c call function from another class 从AppDelegate调用方法 - Objective-C - Call a method from AppDelegate - Objective-C UIButton addTarget:action:forControlEvents:[NSObject doesNotRecognizeSelector:]中的结果 - UIButton addTarget:action:forControlEvents: results in [NSObject doesNotRecognizeSelector:] UIControl(addTarget:action:forControlEvents :) @selector参数 - UIControl (addTarget:action:forControlEvents:) @selector arguments 如何在Objective-C中调用另一个方法中的方法 - How to call a method inside another method in Objective-C 使用addTarget获取运行时异常:Action:forControlEvents - Getting an runtime exception using addTarget:Action:forControlEvents
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM