在类之间传递@selector,从实例化的Object调用方法



我有一个带有方法的viewController:doSomething:。我有一个类Menu,它设置了一个带有按钮的菜单,我在上面"添加了一个目标",这样我就可以从按钮中调用选择器。该子类是从viewController实例化的。

当我点击实例化菜单的按钮时,我想调用viewController中的方法。显而易见的设置方法是在NSNotifications中添加一个观察者,但似乎有点笨拙。我可以以某种方式将选择器从视图控制器传递到实例吗

在菜单.h 中

-(void)setupMenuWithAction:(SEL)action {

从ViewController调用:

[menu setupMenuWithAction:@selector(doSomething:)];

尝试过了,但它不起作用,当点击按钮时会出现无法识别的选择器错误,但我想知道这是否是一个有效的概念,如果是,我该如何修复它。

更改Menu.h中的方法以包含一个目标--使其成为-(void)setupMenuWithAction:(SEL)action andTarget:(id)target。在该方法中,使用[target performSelector:action]; 调用选择器

然后,从ViewController调用[menu setupMenuWithAction:@selector(doSomething:) andTarget:self];

对于具有实际选择器的类中的函数,请使用"+"而不是"-"。即使用类方法而不是实例方法

相关内容