Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在类之间传递@选择器,从实例对象调用该方法_Ios_Objective C_Cocoa Touch_Selector_Subclass - Fatal编程技术网

Ios 在类之间传递@选择器,从实例对象调用该方法

Ios 在类之间传递@选择器,从实例对象调用该方法,ios,objective-c,cocoa-touch,selector,subclass,Ios,Objective C,Cocoa Touch,Selector,Subclass,我有一个viewController,其方法为:doSomething:。我有一个类菜单,它设置了一个带有按钮的菜单,我在菜单上“添加了一个目标”,这样我就可以从按钮调用选择器。该子类是从viewController实例化的 当我点击实例化菜单的按钮时,我想调用viewController中的方法。设置此功能的明显方法是在NSNotifications中添加一个观察者,但似乎有点笨拙。我是否可以将选择器从视图控制器传递到实例,如下所示: 在菜单中 -(void)setupMenuWithActi

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

当我点击实例化菜单的按钮时,我想调用viewController中的方法。设置此功能的明显方法是在NSNotifications中添加一个观察者,但似乎有点笨拙。我是否可以将选择器从视图控制器传递到实例,如下所示:

在菜单中

-(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先生知道了。我在把
对象
更改为
目标
后编辑了它(因为苹果的文档就是这么称呼它的)。您必须将原始代码的某些位与新代码的某些位结合使用:)