2016-04-28 19 views
0

Ich möchte überprüfen können, ob die Hintergrundfarbe aller Schaltflächen UIColor.whiteColor ist. Ich erkläre, ob sich eine Ansicht im Suchmodus oder im normalen Modus befindet.How to check backgroundColor aller Tasten

Ich möchte etwas ähnliches mit den folgenden tun, aber überprüft, ob Array bestimmte Wert enthält. In meinem Fall würde das nicht funktionieren, weil UIColor.whiteColor eine Eigenschaft von UIButton ist.

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

Dann, wenn ich es in der folgenden Art und Weise gesagt, ich weiß nicht, wie ich sicher, dass Farbe Hintergrund machen kann alle Schaltfläche ist weiß wie es Hintergrundfarbe Validierung, sobald eine Schaltfläche ist weiß, das ist nicht, was passieren wird Ich brauche.

for button in categoryScrollView.subviews { 

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

Wie kann ich die Hintergrundfarbe aller Tasten überprüfen?

+0

Also, was zu validieren, dass obwohl Schaltflächen Hintergrundfarbe weiß ist, möchten Sie inSearchMode = false machen, oder? – Hasya

+0

Ich möchte inSearchMode = false setzen, wenn ich weiß, dass alle Schaltflächen Hintergrundfarbe weiß ist. –

+1

Verwenden Sie Ihr Modell, nicht die Farbe eines Knopfes !!! – Wain

Antwort

2

würde ich diese Prüfung in einer Funktion einschließen, wie folgt aus (beachten Sie, dass ich einen Scheck bin auch, dass jede Ansicht eine Schaltfläche):

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

Perfekte Antwort. – Hasya

+0

Danke. Soll ich 'inSearchMode = false 'vor' return true' hinzufügen? Oder tun 'wenn allWhiteButtons() {inSearchMode = false}'? –

+0

Diese Funktion macht "inSearchMode" überflüssig, da sofort nach dem Finden eines nicht übereinstimmenden Elements false zurückgegeben wird - Sie verwenden das anstelle eines separaten Bits. – sschale

0

Fügen Sie einen Zähler wie whiteBtnCount in die Schleife, wo Sie die Hintergrundfarbe überprüfen. Erhöhen Sie den Zähler, wenn es mit der Farbe übereinstimmt, und brechen Sie die Schleife, sobald der Zähler die Anzahl der Schaltflächen erreicht. Voila, jetzt weißt du, ob alle Tasten weiß sind oder nicht.

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 

Aber IMHO ist dies kein guter Weg, um es überhaupt zu tun. Sie sollten über einen Code verfügen, um den Statusübergang auszuführen, und die Schaltflächen basierend auf diesem Status weiß oder nicht weiß machen.

0

Wenn Sie nicht viel UIButtons haben und dass sie bereits als IBOutlets deklariert sind, können Sie eine Funktion erstellen, die durch alle UIButtons Schleifen:

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

Oder Sie können auch eine Schleife durch alle Tasten Ihres 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 
     } 
    } 
}