iOS开发:如何获取编程创建按钮的sender tag
获取编程创建按钮的sender Tag
嘿,这个需求其实挺常见的,我来给你捋捋不同开发语言下的实现方式~
Swift 实现步骤
创建按钮并设置唯一Tag
先通过代码批量创建按钮,给每个按钮分配独一无二的tag值,示例如下:// 创建第一个按钮 let button1 = UIButton(type: .system) button1.frame = CGRect(x: 50, y: 100, width: 200, height: 50) button1.setTitle("按钮1", for: .normal) button1.tag = 1 // 设置专属tag button1.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside) view.addSubview(button1) // 创建第二个按钮 let button2 = UIButton(type: .system) button2.frame = CGRect(x: 50, y: 200, width: 200, height: 50) button2.setTitle("按钮2", for: .normal) button2.tag = 2 // 分配不同的tag button2.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside) view.addSubview(button2)在点击事件中获取Tag
实现对应的点击回调方法,直接通过sender参数获取tag即可:@objc func buttonTapped(_ sender: UIButton) { let tappedTag = sender.tag print("点击的按钮Tag是:\(tappedTag)") // 这里可以根据tag值做分支逻辑,比如tag=1执行A操作,tag=2执行B操作 }
Objective-C 实现步骤
如果是用Objective-C开发,逻辑完全一致:
创建按钮并设置Tag
// 创建第一个按钮 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeSystem]; button1.frame = CGRectMake(50, 100, 200, 50); [button1 setTitle:@"按钮1" forState:UIControlStateNormal]; button1.tag = 1; [button1 addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button1]; // 创建第二个按钮 UIButton *button2 = [UIButton buttonWithType:UIButtonTypeSystem]; button2.frame = CGRectMake(50, 200, 200, 50); [button2 setTitle:@"按钮2" forState:UIControlStateNormal]; button2.tag = 2; [button2 addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button2];获取点击按钮的Tag
- (void)buttonTapped:(UIButton *)sender { NSInteger tappedTag = sender.tag; NSLog(@"点击的按钮Tag是:%ld", (long)tappedTag); // 根据tag值执行对应业务逻辑 }
小提醒
- 务必保证每个按钮的
tag值唯一,避免多个按钮共用同一tag导致逻辑混乱 - 如果是自定义按钮子类,只要继承自
UIButton,同样可以通过sender.tag获取到设置的值 - 点击方法的参数最好直接声明为
UIButton类型,省去额外的强制类型转换步骤
内容的提问来源于stack exchange,提问作者Brian Hicks
相关产品推荐
相关产品推荐

