如何在 UiButton 操作中传递任何类型的参数



我想通过按钮操作传递一个 url,因为我有 10 个按钮,这些按钮是通过代码动态创建的,单击后为每个相应的按钮分配一个特定的 URL。这是我的代码

NSString *linkUrl = [NSString stringWithFormat:@"%@",[AllrecordG objectForKey:@"Link"]];
[leftLabelG addTarget:self action:@selector(clickMe:linkUrl:) forControlEvents:UIControlEventTouchUpInside];
-(void)clickMe:(UIButton *)sender{
}

但在这里我收到警告为"未使用的变量链接URL"。

我研究了不同的文章,但有人告诉他们不可能通过论证链接。任何人都可以告诉我,我如何为每个按钮操作传递 url 以及如何检索这些值。在单击我定义中。

提前谢谢。

子类UIButton是这样的:

MyButton.h

@interface MyButton : UIButton
{
     NSString *_linkUrl;
}
@property (nonatomic, retain) NSString *linkUrl

我的按钮

@implementation MyButton
@synthesize linkUrl = _linkUrl

传递链接网址:

NSString *linkUrl = [NSString stringWithFormat:@"%@",[AllrecordG objectForKey:@"Link"]];
[leftLabelG addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside];
[leftLabelG setLinkUrl:linkUrl];

现在,您可以在操作中获取链接URL,如下所示:

-(void)clickMe:(MyButton *)sender{
      NSString *url = sender.linkUrl;
}

把你的链接网址放在 NSArray 中;

NSArray *linkUrls = [NSArray arratWithObjects:@"link",@"blah",@"blah"........,nil];

然后将按钮的标签设置为数组中的索引,然后

leftLabelG.tag = 1;
rightLabelG.tag = 2;
-(void)clickMe:(UIButton *)sender{
      NSString *url = [linkUrls objectAtIndex:sender.tag];
}

使用类别

- (void)addTarget:(id)target action:(SEL)action withObject:(id)object forControlEvents:(UIControlEvents)controlEvents;

-(void)addTarget:(id)target action:(SEL)action withObject:(id)object1 withObject:(id)object2 forControlEvents:(UIControlEvents)controlEvents {
SEL action_ = [self generateAction:action withObject:object1 withObject:object2];
IMP impl = imp_implementationWithBlock(^(id self_) {
    objc_msgSend(self_, action, self, [object1 copy], [object2 copy]);
});
class_replaceMethod([target class], action_, impl, "v@:@");
[self addTarget:target action:action_ forControlEvents:controlEvents];

}

最新更新