2016-04-28 6 views
0

すべてのボタンの背景色が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 = falseを正しく設定することを確認するだけです。 – Hasya

+0

すべてのボタンの背景色が白であることがわかっている場合は、inSearchMode = falseに設定します。 –

+1

ボタンの色ではなく、モデルを使用してください。 – Wain

答えて

2

私は、この(私は各ビューがボタンであることを確認含めてることに注意してください)のように、関数内でこのチェックを囲みたい:あなたはUIButtonsの多くを持っていない場合は

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'を追加する必要がありますか? if allWhiteButtons(){inSearchMode = false} 'を実行しますか? –

+0

この関数は 'inSearchMode'の必要性を取り除きます。一致しない項目を見つけたら直ちにfalseを返します。別のビットではなくその値を使用します。 – sschale

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

しかし、私見では、これがすべてでそれを行うには良い方法ではありません。この状態に基づいて、状態遷移を行い、ボタンを白または白にしないコードが必要です。

0

あなたのself.viewのすべてのボタンをループもでき

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

それとも::彼らはすでにあなたがすべてのあなたのUIButtonsをループ関数を作成することができますIBOutletsとして宣言されていること

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 
     } 
    } 
} 
関連する問題