2014-12-28 111 views
-2

按鈕功能的作品,如果分數經過5它的工作原理,如果我設置變量得分等於一個數字大於它已經是,這樣可以節省高的分數,我怎麼得到它增加並保存高分當按鈕被點擊時(如果按鈕高於高分)?通過ViewDidLoad()獲取圖像?

如果我設置分數等於100明確,然後將其恢復到一個較低的數字,比如說14,屏幕仍然會顯示100如何得到這個使用該按鈕,這樣我就不必使用變量來設置數字,比方說,如果用戶點擊120次按鈕,屏幕文字將是120,而不是100?

謝謝。

var score = 0 

class ViewController: UIViewController { 

//0...n 
@IBOutlet weak var textLabel: UILabel! 
//image 
@IBOutlet weak var image: UIImageView! 
//adds 1 
@IBAction func addButton(sender: AnyObject) { 
    ++score 
    textLabel.text = String(score) 

    if textLabel.text >= "5" { 
     image.image = UIImage(named: "win") 
    } 
} 

func newScore() -> Int { 
    var highScore = NSUserDefaults.standardUserDefaults().integerForKey("highscore") 

    if score > highScore { 
     NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore") 
     NSUserDefaults.standardUserDefaults().synchronize() 
     highScore = score 
    } 
    return highScore 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    textLabel.text = String(newScore()) 

    if textLabel.text >= "5" { 
     image.image = UIImage(named: "win") 
    } 

    textLabel.text = String(newScore()) 
} 
+1

爲什麼你使用textLabel.text來檢測你的分數,以確定用戶是否勝利?你已經擁有了一個屬性:'score' – Ian

+0

因爲這是UI上顯示的內容。 @Bluehound –

+0

@JustinRose我相信他說的:'如果textLabel.text> =「5」'應該是這樣的:'如果分數> = 5' –

回答

0

可以觀察員添加到score財產,所以當它被設置,您可以檢查分數和相應地更新UI。

@IBOutlet weak var imageView: UIImageView! 
@IBOutlet weak var scoreLabel: UILabel! 


var score: Int = NSUserDefaults.standardUserDefaults().integerForKey("highscore") { 
    didSet { 
     updateScore() 
    } 
} 

func updateScore() { 
    if score > 5 { 
     println("win") 
    } 

    scoreLabel.text = "\(score)" 

    checkHighScore() 
} 

func checkHighScore() { 

    let defaults = NSUserDefaults.standardUserDefaults() 
    if score > defaults.integerForKey("highscore") { 
     defaults.setInteger(score, forKey: "highscore") 
     defaults.synchronize() 
    } 

} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    updateScore() 
} 

@IBAction func buttonPressed(sender: UIButton) { 
    score++ 
} 
+0

我怎樣才能讓高分離開高分數,而不是分數?所以如果高分是15,它不會從0開始,但是從15 –

+0

您希望文本標籤以高分開始? – Ian

+0

是的,確切地說。如果高分爲15分,那麼當應用程序啓動時,它將從16開始計數...... n @Bluehound –

0

跟蹤按鈕的點擊次數在另一個變量,像buttonClicks,每次用戶點擊該按鈕時遞增它。然後addButton下做

textLabel.text = String(buttonClicks)