如何在动作中传递参数:@selector?

时间:2015-05-31 02:55:25

标签: objective-c selector

我试图通过action传递一个NSString参数:@selector。我尝试过很多东西,比如

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];

2 个答案:

答案 0 :(得分:0)

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

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

您无法将字符串传递给按钮操作,iOS会将按钮传递给该方法。如果要在方法中使用任何字符串值,则需要声明将返回特定字符串的变量或方法。

答案 1 :(得分:0)

您无法使用addTarget:action:forControlEvents:直接发送不同参数,只会将self(UIButton *)发送给@selector

意味着你在做什么就像:[self function:< testButton >];

你真正想做的是:

[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);
}

希望这会有所帮助..