2014-09-20 50 views
0

我已經完成了在樹屋中用Swift課程構建一個簡單的iPhone應用程序,現在我想添加一個功能。我想阻止連續顯示相同的背景顏色和相同的有趣事實。我一直在努力,但我似乎無法弄清楚正確的方法。我嘗試在FactBook.swift和ColorWheel.swift中存儲一個randomIndex變量來保存生成的隨機數以獲得隨機事實/顏色。然後我使用do-while循環將該隨機數與變量進行比較,如果匹配,則生成另一個隨機數。但是,我無法在循環中獲得正確的範圍。如何防止在Swift中連續顯示相同的隨機顏色和隨機事實?

這裏是我的代碼,我對項目迄今:

ViewController.swift

import UIKit 

    class ViewController: UIViewController { 

    @IBOutlet weak var funFactLabel: UILabel! 
    @IBOutlet weak var funFactButton: UIButton! 

    let factBook = FactBook() 
    let colorWheel = ColorWheel() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     funFactLabel.text = factBook.randomFact() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func showFunFact() { 
     var randomColor = colorWheel.randomColor() 
     view.backgroundColor = randomColor 
     funFactButton.tintColor = randomColor 
     funFactLabel.text = factBook.randomFact() 
    } 

} 

FactBook.swift

import Foundation 

struct FactBook { 

    var randomIndex = 0 

    let factsArray = [ 
     "Ants stretch when they wake up in the morning.", 
     "Ostritches can run faster than horses.", 
     "Olympic gold medals are actually mostly made of silver.", 
     "You are born with 300 bones; by the time you are an adult you will have 206.", 
     "It takes about 8 minutes for light from the Sun to reach the Earth.", 
     "Some bamboo plants can grow almost a meter in just one day.", 
     "Some penguins can leap 2-3 meters out of the water.", 
     "The state of Florida is bigger than England.", 
     "On average, it takes 66 days to form a new habit.", 
     "Mammoths still walked the Earth when the Great Pyramid was being built." 
    ] 

    func randomFact() -> String { 
     var unsignedArrayCount = UInt32(factsArray.count) 
     var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount) 
     var randomNumber = Int(unsignedRandomNumber) 

     // verify value of randomNumber 
     println(randomNumber) 

     return factsArray[randomNumber] 
    } 

} 

ColorWheel.swift

import Foundation 
import UIKit 

struct ColorWheel { 
    let colorsArray = [ 
     UIColor(red: 90/255.0, green: 187/255.0, blue: 181/255.0, alpha: 1.0), //teal color 
     UIColor(red: 222/255.0, green: 171/255.0, blue: 66/255.0, alpha: 1.0), //yellow color 
     UIColor(red: 223/255.0, green: 86/255.0, blue: 94/255.0, alpha: 1.0), //red color 
     UIColor(red: 239/255.0, green: 130/255.0, blue: 100/255.0, alpha: 1.0), //orange color 
     UIColor(red: 77/255.0, green: 75/255.0, blue: 82/255.0, alpha: 1.0), //dark color 
     UIColor(red: 105/255.0, green: 94/255.0, blue: 133/255.0, alpha: 1.0), //purple color 
     UIColor(red: 85/255.0, green: 176/255.0, blue: 112/255.0, alpha: 1.0), //green color 
    ] 

    func randomColor() -> UIColor { 
     var unsignedArrayCount = UInt32(colorsArray.count) 
     var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount) 
     var randomNumber = Int(unsignedRandomNumber) 

     return colorsArray[randomNumber] 
    } 
} 

回答

2

使可變c選擇兩個數組並將這些可變數組用作工作數組。在這些數組中選擇一個隨機元素後,刪除該成員。當計數爲零時,如果您想繼續操作,請創建一個新副本。