addTarget传值,addTarget传多个值,最简单的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
addTarget传值,addTarget传多个值,最简单的⽅法
做项⽬的时候遇到⼀个问题就是addTarget需要传递多个值,但是问了很多⼈都不会,⾃⼰百度了下,发现很⿇烦也很繁琐,这⾥介绍⼀种最简单的⽅法。
使⽤tag传值这个就不啰嗦了,相信学过iOS的都会,介绍的是重写Button⽗类的⽅法,⾮常简单,拿过去都能直接使⽤。
1⾸先创建类,继承⾃UIButton,类名随便写,我这⾥使⽤SelfButton(也可使⽤类扩展)
#import <UIKit/UIKit.h>
@interface SelfButton : UIButton
//字典传值,,这⾥尽量使⽤可变的,赋值之后还可以对数据进⾏操作
@property (nonatomic, strong) NSMutableDictionary* multiParamDic;
//数组传值
@property (nonatomic, strong) NSMutableArray* multiParamArr;
@end
.m⽂件⾥⾯什么也不⽤写
2在viewDidLoad⾥⾯加⼊以下代码
//11111字典⽅法
NSMutableDictionary* selfDic =[[NSMutableDictionary alloc]initWithDictionary: @{@"one":@"one", @"two":@2, @"third":@(3)}];
// 赋值后还可以修改值
[selfDic setValue:@"修改后的one" forKey:@"one"];
// 创建按钮
SelfButton* sButton = [[SelfButton alloc] init];
[sButton setFrame:CGRectMake(0, 50, 50, 50)];
[sButton setBackgroundColor:[UIColor grayColor]];
[sButton addTarget:self action:@selector(dicClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:sButton];
// 把字典赋值为⾃定义按钮的字典对象
sButton.multiParamDic = selfDic;
//2222 数组⽅法
NSMutableArray* selfArr=[[NSMutableArray alloc]initWithArray:@[@"1",@"2"]];
SelfButton* mButton1 = [[SelfButton alloc] init];
[mButton1 setFrame:CGRectMake(0, 100, 50, 50)];
[mButton1 setBackgroundColor:[UIColor redColor]];
[mButton1 addTarget:self action:@selector(arrClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:mButton1];
mButton1.multiParamArr=selfArr;
// 修改值
selfArr[0]=@"xiugaide1";
3 把点击事件触发的事件沾到项⽬⾥⾯
- (void)dicClicked:(UIButton* )button
{
SelfButton* multiParamButton = (SelfButton* )button;
NSLog(@"字典的⽅式 : %@", multiParamButton.multiParamDic);
}
- (void)arrClicked:(UIButton* )button
{
SelfButton* multiParamButton = (SelfButton* )button;
NSLog(@"数组的⽅式 : %@", multiParamButton.multiParamArr);
}
4,运⾏,点击两个按钮就能看见效果啦。