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

How do I pass a parameter in a action:@selector?

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

action:@selector(function:example)
action:@selector(function:example)
action:@selector(function) withObject:example

None 这些对我有用,我不知道该怎么做。

这是我正在尝试的方法 select

- (void) function: (NSString *)testString{
//Whatever stuffz
}

这是 select 或

中的完整代码行
[testButton addTarget:self action:@selector(function:) forControlEvents:UIControlEventTouchUpInside];

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

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

您不能将字符串传递给按钮操作,iOS 将按钮本身传递给方法。如果你想在方法中使用任何字符串值,那么你需要声明一个变量或方法,它将 return 特定的字符串。

您不能使用 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);
}

希望这对您有所帮助..