首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将参数传递给addTarget:action:forControlEvents

将参数传递给addTarget:action:forControlEvents
EN

Stack Overflow用户
提问于 2010-10-21 22:23:35
回答 10查看 120.1K关注 0票数 129

我像这样使用addTarget:action:forControlEvents:

代码语言:javascript
复制
[newsButton addTarget:self
action:@selector(switchToNewsDetails)
forControlEvents:UIControlEventTouchUpInside];

我想把参数传递给我的选择器"switchToNewsDetails“。我成功完成的唯一一件事就是通过以下代码传递(Id)发送者:

代码语言:javascript
复制
action:@selector(switchToNewsDetails:)

但是我正在尝试传递像整数值一样的变量。这样写是行不通的:

代码语言:javascript
复制
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i)
forControlEvents:UIControlEventTouchUpInside];

这样写也行不通:

代码语言:javascript
复制
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i:)
forControlEvents:UIControlEventTouchUpInside];

如有任何帮助,我们将不胜感激:)

EN

回答 10

Stack Overflow用户

发布于 2010-10-21 22:33:46

Target-Action允许三种不同形式的操作选择器:

代码语言:javascript
复制
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
票数 19
EN

Stack Overflow用户

发布于 2016-10-15 04:43:34

需要的不仅仅是通过.tag的(int)?使用KVC!

您可以通过按钮对象本身传递任何您想要的数据(通过访问CALayers keyValue dict)。

像这样设置目标(用":")

代码语言:javascript
复制
[myButton addTarget:self action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];

将数据添加到按钮本身(也就是按钮的.layer ),如下所示:

代码语言:javascript
复制
NSString *dataIWantToPass = @"this is my data";//can be anything, doesn't have to be NSString
[myButton.layer setValue:dataIWantToPass forKey:@"anyKey"];//you can set as many of these as you'd like too!

然后当点击按钮时,你可以像这样检查它:

代码语言:javascript
复制
-(void)buttonTap:(UIButton*)sender{

    NSString *dataThatWasPassed = (NSString *)[sender.layer valueForKey:@"anyKey"];
    NSLog(@"My passed-thru data was: %@", dataThatWasPassed);

}
票数 18
EN

Stack Overflow用户

发布于 2013-10-30 04:41:08

我做了一个部分基于上述信息的解决方案。我只需将titlelabel.text设置为要传递的字符串,并将titlelabel.hidden设置为

如下所示:

代码语言:javascript
复制
UIButton *imageclick = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
imageclick.frame = photoframe;
imageclick.titleLabel.text = [NSString stringWithFormat:@"%@.%@", ti.mediaImage, ti.mediaExtension];
imageclick.titleLabel.hidden = YES;

这样,就不需要继承或类别,也不会出现内存泄漏

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3988485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档