我有一个带有方法的viewController:doSomething:。我有一个类菜单设置一个带有按钮的菜单,我在其上“添加了一个目标”,所以我可以从按钮调用一个选择器。此子类是从viewController实例化的。
当我点击实例菜单的按钮时,我想调用viewController中的方法。设置它的显而易见的方法是为NSNotifications添加一个观察者,但看起来有点笨拙。我可以以某种方式将选择器从视图控制器传递到实例,如下所示:
在Menu.h中
-(void)setupMenuWithAction:(SEL)action {
从ViewController调用:
[menu setupMenuWithAction:@selector(doSomething:)];
尝试它并且它不起作用,当点击按钮时给出无法识别的选择器错误,但我想知道它是否是一个有效的概念,如果是,我该如何解决它。
答案 0 :(得分:3)
更改Menu.h
中的方法以包含目标 - 将其设为-(void)setupMenuWithAction:(SEL)action andTarget:(id)target
。在该方法中,使用[target performSelector:action];
然后,从ViewController
,致电[menu setupMenuWithAction:@selector(doSomething:) andTarget:self];
答案 1 :(得分:0)
对于具有实际选择器的类中的函数,请使用' +'而不是' - '。即使用类方法而不是实例方法