Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c 如何在操作中传递参数:@selector?_Objective C_Selector - Fatal编程技术网

Objective c 如何在操作中传递参数:@selector?

Objective c 如何在操作中传递参数:@selector?,objective-c,selector,Objective C,Selector,我试图通过操作:@selector传递NSString参数。我试过很多东西,比如 action:@selector(function:example) action:@selector(function:example) action:@selector(function) withObject:example 这些都不适合我,我也不知道该怎么办 这是我尝试选择的方法 - (void) function: (NSString *)testString{ //Whatever stuffz }

我试图通过操作:@selector传递NSString参数。我试过很多东西,比如

action:@selector(function:example)
action:@selector(function:example)
action:@selector(function) withObject:example
这些都不适合我,我也不知道该怎么办

这是我尝试选择的方法

- (void) function: (NSString *)testString{
//Whatever stuffz
}
这是选择器所在的完整代码行

[testButton addTarget:self action:@selector(function:) forControlEvents:UIControlEventTouchUpInside];

您可以将值传递给选择器,如下所示

[self performSelector:@selector(function:) withObject:@"myString"];

您不能将字符串传递给按钮操作,而将按钮本身传递给方法。如果要在方法中使用任何字符串值,则需要声明一个变量或方法,该变量或方法将返回特定字符串

不能使用addTarget:action:forControlEvents:直接发送不同的参数,它只会将其selfUIButton*发送到@selector

意思是你正在做的事情就像:[自我功能:]

你真正想做的是:

[testButton addTarget:self action:@selector(testButtonAction:) forControlEvents:UIControlEventTouchUpInside];

- (void)testButtonAction:(UIButton *)sender
{
    [self performSelector:@selector(function:) withObject:@"yourString"];
}

- (void) function:(NSString *)testString
{
    NSLog(@"testString :%@", testString);
}

希望这有帮助。

不完全清楚您的情况。您可以发布您试图获取选择器的方法签名吗?您试图用它调用什么方法?>为什么要传递NSString?我试图通过按下按钮从函数发送数据库名称。我希望这是有意义的。定义一个常量,如define DATABASE_NAME@db1,并使用DATABASE_NAME在函数中访问它。谢谢你帮助解决了我的问题