如何为多个按钮配置Touch Up Inside,实现差异化标签文本切换?
解决方法
方法一:类型转换后判断按钮实例
Swift 中Any类型无法直接与UIButton实例比较,需要先将sender强制转换为UIButton类型,再判断是否对应目标按钮:
@IBOutlet weak var label_1 : UILabel! @IBOutlet weak var btn_1 : UIButton! @IBOutlet weak var btn_2 : UIButton! @IBAction func onTapChangeText(_ sender: Any) { // 将sender转为UIButton,转换失败则直接返回 guard let tappedBtn = sender as? UIButton else { return } if tappedBtn == btn_1 { label_1.text = "Hello" } else if tappedBtn == btn_2 { label_1.text = "另一段文本" } }
方法二:通过按钮 Tag 区分
在 Xcode 的 Attributes Inspector 中给两个按钮设置不同的 Tag(比如给 btn_1 设为1,btn_2 设为2),再通过 Tag 判断点击的按钮:
@IBOutlet weak var label_1 : UILabel! @IBOutlet weak var btn_1 : UIButton! @IBOutlet weak var btn_2 : UIButton! @IBAction func onTapChangeText(_ sender: Any) { guard let tappedBtn = sender as? UIButton else { return } switch tappedBtn.tag { case 1: label_1.text = "Hello" case 2: label_1.text = "另一段文本" default: break } }
方法三:为每个按钮单独创建 IBAction
最直观的方式是给两个按钮分别绑定独立的点击方法:
@IBOutlet weak var label_1 : UILabel! @IBOutlet weak var btn_1 : UIButton! @IBOutlet weak var btn_2 : UIButton! @IBAction func onBtn1Tap(_ sender: UIButton) { label_1.text = "Hello" } @IBAction func onBtn2Tap(_ sender: UIButton) { label_1.text = "另一段文本" }
绑定事件时,将 btn_1 的 Touch Up Inside 关联到onBtn1Tap,btn_2 关联到onBtn2Tap即可。
内容的提问来源于stack exchange,提问作者Jamie YS Kam
相关产品推荐
相关产品推荐

