2016-04-28 59 views
0

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

我想这样做有以下但检查类似的东西,如果数组包含一定的价值。这在我的情况下不起作用,因为UIColor.whiteColor是UIButton的一个属性。

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

然后,如果我把它放在下面的方式,我不知道我怎么能确保所有按钮的背景颜色为白色,因为它会尽快通过验证的任何按钮的背景颜色为白色,而这并不是我需要。

for button in categoryScrollView.subviews { 

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

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

+0

所以你正是验证,虽然按钮的背景颜色是白色的,你想inSearchMode =假的,对不对? – Hasya

+0

我想在设置inSearchMode = false时知道所有按钮的背景色是白色的。 –

+1

使用你的模型,而不是按钮的颜色! – Wain

回答

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 
} 
+0

完美答案。 – Hasya

+0

谢谢。我应该在'return true'之前加入'inSearchMode = false'吗? 或者'如果allWhiteButtons(){inSearchMode = false}'? –

+0

该函数避免了对“inSearchMode”的需求,因为它会在找到一个不匹配的项目时立即返回false,而不是使用单独的位。 – sschale

0

添加计数器像whiteBtnCount在循环你在哪里检查计数器,如果它的颜色相匹配,一旦计数器达到按钮计数打破循环的backgroundcolor.Increment。瞧,现在你知道所有的按钮是不是白色。

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 
     }      
    } 
} 
2
var allWhite = true 
for button in categoryScrollView.subviews { 
    if button.backgroundColor != UIColor.whiteColor() { 
     allWhite = false      
    } 
} 
inSearchMode = !allWhite 

但恕我直言,这不是做它在所有的好方法。你应该有一个代码来做状态转换,并根据这个状态使按钮变白或不变白。

0

如果你没有很多UIButtons的并且,他们已经声明为IBOutlets您可以创建通过所有UIButtons循环功能:

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 
     } 
    } 
} 
相关问题