如何检查所有按钮的backgroundColor

时间:2016-04-28 06:43:11

标签: ios swift

我希望能够检查是否所有按钮'背景颜色是UIColor.whiteColor。我通过按钮状态确定视图是处于搜索模式还是处于正常模式。

我希望使用以下内容执行类似的操作,但contains()检查数组是否包含特定值。它在我的案例中不起作用,因为UIColor.whiteColor是UIButton的属性。

if contains(categoryScrollView.subviews, UIColor.whiteColor) {
    inSearchMode = false 
}

然后,如果我按照以下方式进行操作,我不知道如何确保所有按钮的背景颜色都是白色的,因为只要按钮的背景颜色为白色,它就会通过验证这不是我需要的。

for button in categoryScrollView.subviews {

    if button.backgroundColor == UIColor.whiteColor() {
        inSearchMode = false                      
    }
}

如何检查所有按钮的背景颜色?

4 个答案:

答案 0 :(得分:2)

var allWhite = true
for button in categoryScrollView.subviews {
    if button.backgroundColor != UIColor.whiteColor() {
        allWhite = false                      
    }
}
inSearchMode = !allWhite 

但恕我直言,这根本不是一个很好的方法。您应该有一个代码来执行状态转换,并根据此状态将按钮设置为白色或非白色。

答案 1 :(得分:2)

我将这个检查括在一个函数中,就像这样(注意我要检查每个视图是一个按钮):

func allWhiteButtons(view: UIView)-> Bool{
  for view in view.subViews {
    if let button = view as? UIButton {
      if button.backgroundColor != UIColor.whiteColor() {
        return false
      }
    }
  }
  return true
}

答案 2 :(得分:0)

在你正在检查backgroundcolor的循环中添加一个像whiteBtnCount这样的计数器。如果计数器与颜色匹配则计数器,并在计数器到达按钮计数时断开循环。瞧,现在您知道所有按钮是否都是白色。

var whiteBtnCount: Int = 0
for button in categoryScrollView.subviews {

    if button.backgroundColor == UIColor.whiteColor() {
       whiteBtnCount += 1
         if whiteBtnCount == btnCount { //ensure btnCount variable holds the number of buttons
          inSearchMode = false
          break
       }                      
    }
}

答案 3 :(得分:0)

如果你没有很多UIButtons并且它们已经被声明为IBOutlets,你可以创建一个遍历所有UIButton的函数:

for button in [yourButton1, yourButton2, yourButton2] {
  if button.backgroundColor == UIColor.whiteColor {
   // Do something 
  } else {
  // Do something else 
  }
}

或者您也可以遍历self.view的所有按钮:

for view in self.view.subviews as [UIView] {
    if let button = view as? UIButton {
        if button.backgroundColor == UIColor.whiteColor {
        // Do something 
        } else {
         // Do something else 
       } 
    }
}