2017-03-31 2 views
0

J'ai une fonction qui crée un CGRect et j'essaye d'assigner une couleur aléatoire à chacun d'eux.Nombre aléatoire correspondant au tableau d'UIColors- ERROR

Je crée les couleurs en tant que variables avec le type UIColor, puis les place dans un tableau appelé colors. Ensuite, je crée un générateur de nombres aléatoires et l'appeler lors de la définition de la couleur de fond du CGRect, mais je reçois l'erreur:

Cannot call value of non-function type "[UIColor}"

Pourquoi est-ce? Voici mon code:

func addBox(location: CGRect) -> UIView { 
    let newBox = UIView(frame: location) 

    let red = UIColor(red: (242.0/255.0), green: (186.0/255.0), blue: (201.0/255.0), alpha: 1.0) 
    let green = UIColor(red: (186.0/255.0), green: (242.0/255.0), blue: (216.0/255.0), alpha: 1.0) 
    let yellow = UIColor(red: (242.0/255.0), green: (226.0/255.0), blue: (186.0/255.0), alpha: 1.0) 
    let blue = UIColor(red: (186.0/255.0), green: (216.0/255.0), blue: (242.0/255.0), alpha: 1.0) 
    let colors = [red, green, yellow, blue] 
    let randomNum:UInt32 = arc4random_uniform(4) 

    newBox.backgroundColor = UIColor(colors(randomNum)) 

    hView.insertSubview(newBox, at: 0) 
    return newBox 
} 

Si quelqu'un pouvait résoudre ce problème, ce serait incroyable. Toute aide serait grandement appréciée !! Merci beaucoup d'avance.

+1

'colors [Int (randomNum)]' –

Répondre

2

Ce:

newBox.backgroundColor = UIColor(colors(randomNum)) 

devrait être:

newBox.backgroundColor = colors[randomNum] 

colors est un tableau de UIColor. Vous avez juste besoin d'un élément du tableau.

Vous devez également changer:

let randomNum:UInt32 = arc4random_uniform(4) 

à:

let randomNum = Int(arc4random_uniform(colors.count)) 

De cette façon, si vous ajoutez plus de couleurs au tableau, vous n'avez pas besoin d'ajuster cette ligne. Cela rend votre code moins sujet aux erreurs.

+0

Hey! Merci beaucoup!! Il semble que cela fonctionne, mais je reçois une erreur: Impossible d'inscrire une valeur de type '[UIColor]' avec un index de type 'UInt32'. Savez-vous pourquoi c'est? –

+0

Voir ma mise à jour. Vous devez mettre le résultat de 'arc4random_uniform' à' Int'. – rmaddy

+0

Parfait! Merci beaucoup. –