Xcode Swift如何在具有4个输入的方法中使用Switch语句(发送方)
我有个问题!这段代码在我的veiwController中运行良好。但是我想把它移到我的结构中,然后只调用一个函数!这个Xcode Swift如何在具有4个输入的方法中使用Switch语句(发送方),xcode,switch-statement,case,Xcode,Switch Statement,Case,我有个问题!这段代码在我的veiwController中运行良好。但是我想把它移到我的结构中,然后只调用一个函数!这个 @IBOutlet weak var billTextField: UITextField! @IBOutlet weak var zeroPctButton: UIButton! @IBOutlet weak var tenPctButton: UIButton! @IBOutlet weak var twentyPctButton: UIButton! @IBOutlet
@IBOutlet weak var billTextField: UITextField!
@IBOutlet weak var zeroPctButton: UIButton!
@IBOutlet weak var tenPctButton: UIButton!
@IBOutlet weak var twentyPctButton: UIButton!
@IBOutlet weak var splitNumberLabel: UILabel!
@IBAction func tipChanged(_ sender: UIButton) {
billTextField.becomeFirstResponder()
switch sender {
case zeroPctButton:
zeroPctButton.isSelected = true
tenPctButton.isSelected = false
twentyPctButton.isSelected = false
billTextField.endEditing(true)
case twentyPctButton:
tenPctButton.isSelected = false
zeroPctButton.isSelected = false
twentyPctButton.isSelected = true
billTextField.endEditing(true)
case tenPctButton:
twentyPctButton.isSelected = false
zeroPctButton.isSelected = false
tenPctButton.isSelected = true
billTextField.endEditing(true)
default:
print("error")
}
在我尝试用4个输入创建我的方法后,它不起作用
struct Switch {
func switchButton(zero: UIButton, ten: UIButton, twenty: UIButton, bill: UITextField) {
switch UIButton() {
case zero :
zero.isSelected = true
ten.isSelected = false
twenty.isSelected = false
bill.endEditing(true)
case twenty :
ten.isSelected = false
zero.isSelected = false
twenty.isSelected = true
bill.endEditing(true)
case ten:
twenty.isSelected = false
zero.isSelected = false
ten.isSelected = true
bill.endEditing(true)
default: print("Error")
例如,当我将开关Uibutton更改为零时,它与这一个按钮一起工作
struct Switch {
func switchButton(zero: UIButton, ten: UIButton, twenty: UIButton, bill: UITextField) {
switch zero {
case zero :
zero.isSelected = true
ten.isSelected = false
twenty.isSelected = false
bill.endEditing(true)
case twenty :
ten.isSelected = false
zero.isSelected = false
twenty.isSelected = true
bill.endEditing(true)
case ten:
twenty.isSelected = false
zero.isSelected = false
ten.isSelected = true
bill.endEditing(true)
default: print("Error")
我尝试使用嵌套的func,但没有成功我还创建了另一个带有4个输入的结构,我将其添加到我的主结构的代码中。
我尝试了太多的事情,我就是停不下来!请帮我理解 您的原始工作代码声明了如下函数:
@IBAction func tipChanged(_ sender: UIButton) {
它有以下特点:
这是一种顶级函数类型的方法
该类型是NSObject子类
该方法标记为@IBAction或@objc
该方法有一个参数,sender,键入为Any
如果您的目标是让界面中的按钮在点击时调用此方法,则这是一种Objective-C/Cocoa机制。所以所有这些都必须是真实的
此方法不能是结构的类型;在这里主持节目的Objective-C/Cocoa根本看不到Swift结构。并且该方法必须使用@IBAction或@objc显式地公开给Objective-C。而且该方法必须有正确的签名:没有参数,或者一个参数通常被键入Any或UIButton或类似类型,因为这是该机制可以调用的格式。因此,如果我想创建将与@iAction一起使用的东西,我需要有正确的签名:没有参数,或者一个参数,通常键入为Any或UIButton或类似的,因为这是该机制可以调用的格式?所以我只能用一个按钮?我没这么说。您可以在同一个方法中调用四个不同的按钮,没有问题,就像您在开始时所做的那样。我不太明白现在的问题是什么;似乎你有工作代码,你把它扔掉了。但这有什么问题?你的代码很正常。是否只是想将大部分代码移动到一个helper函数中?在这种情况下,从工作方法调用helper函数。是的,我的代码正在工作,但我创建了另一个文件。我将把所有函数放在struct中,只调用它们。我创建switchButton方法只是为了在我的IBACtion func from struct中调用它。但是我不明白为什么它不能处理4个输入。好吧,你这么说,但是你没有显示任何代码,你的tipChanged方法调用你的switchButton方法,所以我不知道你在尝试什么。