Benr783
Benr783

Reputation: 2890

Randomly select a UIImage

I need to pick one of these dots. I add them all before viewDidLoad, I need it to pick a random one. My current code returns the error cannot assign to 'openingScreenDynamicDot in 'self'. How is this fixed?

CODE:

    let openingScreenDynamicDot = UIImage()
    let dotOne = UIImage(named: "dot1.png")
    let dotTwo = UIImage(named: "dot2.png")
    let dotThree = UIImage(named: "dot3.png")
    let dotFour = UIImage(named: "dot4.png")
    let dotFive = UIImage(named: "dot5.png")
    let dotSix = UIImage(named: "dot6.png")
    let dotSeven = UIImage(named: "dot7.png")
    let dotEight = UIImage(named: "dot8.png")
    let dotNine = UIImage(named: "dot9.png")
    let dotTen = UIImage(named: "dot10.png")
    let dotEleven = UIImage(named: "dot11.png")
    let dotTwelve = UIImage(named: "dot12.png")
    let dotThirteen = UIImage(named: "dot13.png")
    var imageNumber = arc4random()%13

override func viewDidLoad() {
        let theRandomImages = [dotOne, dotTwo, dotThree, dotFour, dotFive, dotSix, dotSeven, dotEight, dotNine, dotTen, dotEleven, dotTwelve, dotThirteen]
        openingScreenDynamicDot = theRandomImages.objectAtIndex(imageNumber)
}

Upvotes: 0

Views: 188

Answers (2)

Bigfoot11
Bigfoot11

Reputation: 921

You can try this code to generate one of your random "dots".

override func viewDidLoad(){
let openingScreenDynamicDot.image = UIImage(named: "dot\(arc4random_uniform(13) + 1).png")
}

This is called "String Interpolation". For more info, Click here.

I hope this can help you if you are still having problems.

Upvotes: 0

David Xu
David Xu

Reputation: 5597

You declare constants with the let keyword and variables with the var keyword.

So change let openingScreenDynamicDot to var openingScreenDynamicDot

also, a swift native array does not have a objectAtIndex method so..

change

openingScreenDynamicDot = theRandomImages.objectAtIndex(imageNumber)

to

openingScreenDynamicDot = theRandomImages[imageNumber]

Upvotes: 1

Related Questions