我像这样使用addTarget:action:forControlEvents:
[newsButton addTarget:self
action:@selector(switchToNewsDetails)
forControlEvents:UIControlEventTouchUpInside];
我想把参数传递给我的选择器"switchToNewsDetails“。我成功完成的唯一一件事就是通过以下代码传递(Id)发送者:
action:@selector(switchToNewsDetails:)
但是我正在尝试传递像整数值一样的变量。这样写是行不通的:
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i)
forControlEvents:UIControlEventTouchUpInside];
这样写也行不通:
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i:)
forControlEvents:UIControlEventTouchUpInside];
如有任何帮助,我们将不胜感激:)
发布于 2010-10-21 22:33:46
Target-Action允许三种不同形式的操作选择器:
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
发布于 2016-10-15 04:43:34
需要的不仅仅是通过.tag的(int)?使用KVC!
您可以通过按钮对象本身传递任何您想要的数据(通过访问CALayers keyValue dict)。
像这样设置目标(用":")
[myButton addTarget:self action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];
将数据添加到按钮本身(也就是按钮的.layer
),如下所示:
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!
然后当点击按钮时,你可以像这样检查它:
-(void)buttonTap:(UIButton*)sender{
NSString *dataThatWasPassed = (NSString *)[sender.layer valueForKey:@"anyKey"];
NSLog(@"My passed-thru data was: %@", dataThatWasPassed);
}
发布于 2013-10-30 04:41:08
我做了一个部分基于上述信息的解决方案。我只需将titlelabel.text设置为要传递的字符串,并将titlelabel.hidden设置为
如下所示:
UIButton *imageclick = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
imageclick.frame = photoframe;
imageclick.titleLabel.text = [NSString stringWithFormat:@"%@.%@", ti.mediaImage, ti.mediaExtension];
imageclick.titleLabel.hidden = YES;
这样,就不需要继承或类别,也不会出现内存泄漏
https://stackoverflow.com/questions/3988485
复制相似问题