Ios 在类之间传递@选择器,从实例对象调用该方法
我有一个viewController,其方法为:doSomething:。我有一个类菜单,它设置了一个带有按钮的菜单,我在菜单上“添加了一个目标”,这样我就可以从按钮调用选择器。该子类是从viewController实例化的 当我点击实例化菜单的按钮时,我想调用viewController中的方法。设置此功能的明显方法是在NSNotifications中添加一个观察者,但似乎有点笨拙。我是否可以将选择器从视图控制器传递到实例,如下所示: 在菜单中Ios 在类之间传递@选择器,从实例对象调用该方法,ios,objective-c,cocoa-touch,selector,subclass,Ios,Objective C,Cocoa Touch,Selector,Subclass,我有一个viewController,其方法为:doSomething:。我有一个类菜单,它设置了一个带有按钮的菜单,我在菜单上“添加了一个目标”,这样我就可以从按钮调用选择器。该子类是从viewController实例化的 当我点击实例化菜单的按钮时,我想调用viewController中的方法。设置此功能的明显方法是在NSNotifications中添加一个观察者,但似乎有点笨拙。我是否可以将选择器从视图控制器传递到实例,如下所示: 在菜单中 -(void)setupMenuWithActi
-(void)setupMenuWithAction:(SEL)action {
从ViewController调用:
[menu setupMenuWithAction:@selector(doSomething:)];
尝试过但不起作用,当点击按钮时会出现无法识别的选择器错误,但我想知道这是否是一个有效的概念,如果是,我如何修复它。更改
菜单中的方法。h
以包括一个目标——使其包含-(void)setupMenuWithAction:(SEL)action和target:(id)target
。在该方法中,使用[target performSelector:action]调用选择器代码>
然后,从ViewController
,调用[菜单设置菜单,操作:@selector(doSomething:)和target:self]代码>对于类中具有实际选择器的函数,请使用“+”而不是“-”。i、 e.使用class方法而不是instance方法非常有趣,但不确定如何添加位:[object performSelector:action];。。。setupMenuWithAction方法:只需制作一个按钮并使用选择器添加一个目标。我是否使用另一种方法调用performSelector:?对不起,太密集了。@Wolfy先生没问题;没有意识到您想直接将其添加为按钮的操作。使用此--[myButton添加目标:目标操作:ControlEvents的操作:UIControlEventTouchUpInside]代码>好的,是的,这完全有道理,我做到了。仍然给我未知的选择器错误。@Wolfy先生刚刚检查了一下,我觉得很好。需要说明的是,doSomething:
是视图控制器中的一个方法,对吗?@wolfy先生知道了。我在把对象
更改为目标
后编辑了它(因为苹果的文档就是这么称呼它的)。您必须将原始代码的某些位与新代码的某些位结合使用:)