我如何使用Touch Up Inside几个按钮?



我正试图根据按下的按钮将标签的文本更改为不同的文本。例如,如果按下btn_1,label_1将显示一些文本,而当按下btn_2时,它将显示其他内容。

所以我现在有

@IBOutlet weak var label_1 : UILabel!
@IBOutlet weak var btn_1 : UIButton!
@IBOutlet weak var btn_2 : UIButton!
@IBAction func onTapChangeText(_ sender:Any) {
label_1.text = "Hello"
}

现在的问题是,每当我点击任何按钮它改变文本Hello"帮助"。但我只想在btn_1被按下时改变它,而不是btn_2

我试着把它改成:

@IBAction func onTapChangeText(_ sender:btn_1) {
label_1.text = "Hello"
}

然而,它只是调用一个错误。我也试过

@IBAction func onTapChangeText(_ sender:Any) {
if sender == btn_1 {
label_1.text = "Hello"
}
}

但它仍然不起作用。相反,它返回一个错误(毫无疑问)

我是Xcode的新手,但不是一般的编码。有人能告诉我怎么解决这个问题吗?

顺便说一下:所有的按钮都是链接的,标签是链接的,按钮被链接到从ViewController的Touch Up Inside调用onTapChangeText()。

您可以为每个按钮使用单独的操作方法,或者您可以修复错误并使用单个方法处理所有按钮。您没有显示错误,但我认为它是:

二进制运算符'=='不能应用于'Any'和'UIButton'类型的操作数

发生这种情况是因为在Interface Builder中创建操作时sender的默认类型是Any。既然你知道它们是按钮,你可以改变类型,然后应该能够确定哪个按钮被点击了:

@IBAction func onTapChangeText(_ sender: UIButton) {
if sender == btn_1 {
label_1.text = "Hello"
} else if sender == btn_2 {
label_1.text = "Goodbye”
}
}

在创建动作时,也可以通过更改Interface Builder中的属性将类型从Any更改为确切的类型(远离Mac,因此无法显示截图)。

相关内容

  • 没有找到相关文章

最新更新