Swift 每次调用任务a或任务b时,使用func替换任务a或任务b

Swift 每次调用任务a或任务b时,使用func替换任务a或任务b,swift,counter,var,func,alternate,Swift,Counter,Var,Func,Alternate,这是switft代码。我想改变一个按钮的背景颜色,目前是红色到蓝色。然而,它再次点击,我希望它从蓝色变为红色。我通常是怎么做的 var counter = 0 var button = UIButton() func switch(){ if counter % 2 == 0 { button.backgroundcolor = .blue } else { button.backgroundcolor = .red } counter += 1} 我写这个问题

这是switft代码。我想改变一个按钮的背景颜色,目前是红色到蓝色。然而,它再次点击,我希望它从蓝色变为红色。我通常是怎么做的

var counter = 0
var button = UIButton()

func switch(){
if counter % 2 == 0 {
  button.backgroundcolor = .blue
  }
    else {
    button.backgroundcolor = .red }
   counter += 1}

我写这个问题是因为虽然我所做的是工作。我认为必须有一种更有效的方法来编写代码,而不是声明一个var并将其分解

因为只有两个状态将
计数器声明为Bool

var backgroundColorIsBlue = false
switch
函数中,由于
switch
是保留字,因此无法编译,只需切换(反转)布尔值并设置背景色即可。如果
背景色为蓝色
,则三值运算符使用
后面的值,否则
后面的值为:

@objc func switchAction(_ sender : UIButton) {
    backgroundColorIsBlue.toggle()
    sender.backgroundColor = backgroundColorIsBlue ? .blue : .red
}

你们为什么需要柜台?只需检查按钮的当前背景颜色并相应地更改一个,不写入
x%y==0
,只需使用
x.isMultiple(of:y)
@adnbsr我需要计数器来切换任务。每次调用该函数时,它应该只执行2个任务中的1个。它执行与上次执行的任务相反的任务。所以func被称为blue func又被称为red。@你能在一个以前从未见过的答案中写出来吗?不,这不是一个答案,只是对这个特殊方法的评论。如果我写一个答案,就不会用这个计数器了。我假设此代码在您的ViewController中(假设您正在访问
按钮.backgroundColor
,而不是
self.backgroundColor
,因此我假设
按钮
是VC的
UIButton
成员)。相反,创建一个
UIButton
子类,它有一个
toggle
方法,可以自动来回更改其颜色。