UILabel返回“nil”?

时间:2015-03-09 22:04:56

标签: swift uibutton uilabel null ibaction

我的UIButton遇到了麻烦。例如,当我单击UIButton Number3并点击ViewController上的checkButton时,currentCountLabel中的结果是可选的(3)。单击checkButton后,它会为每个数字执行此操作。如果我再次点击该按钮,currentCountLabel会说," nil"。这是我的所有代码:

ViewController.swift:

class ViewController: UIViewController {

var currentCountLabel: UILabel = UILabel()

var currentCount: Int = 0

var IncorrectLabel: UILabel = UILabel()

var CorrectLabel: UILabel = UILabel()

var currectAmountCorrect : Int = 0

var currentAmountIncorrect : Int = 0

var flashTimer : NSTimer = NSTimer()

var timerCounter : Int = 0

var randomImageGeneratorNumber : Int = 0

var flashingImageView: UIImageView = UIImageView()

var flashButton: UIButton = UIButton()

var currentTime = NSTimer()

func timerFunc() {
    flashButton.hidden = !flashButton.hidden
    flashingImageView.hidden = !flashingImageView.hidden
}

@IBAction func flashButton(sender: UIButton) {

    flashButton.hidden = !flashButton.hidden
    flashingImageView.hidden = !flashingImageView.hidden
    flashingImageView.image = UIImage(named: "Image\(arc4random_uniform(6) + 1).png")

    if (flashingImageView.image == UIImage(named: "Image1")){

        randomImageGeneratorNumber == 1

    }

    if (flashingImageView.image == UIImage(named: "Image2")){

        randomImageGeneratorNumber == 2

    }

    if (flashingImageView.image == UIImage(named: "Image3")){

        randomImageGeneratorNumber == 3

    }

    if (flashingImageView.image == UIImage(named: "Image4")){

        randomImageGeneratorNumber == 4

    }

    if (flashingImageView.image == UIImage(named: "Image5")){

        randomImageGeneratorNumber == 5

    }

    if (flashingImageView.image == UIImage(named: "Image6")){

        randomImageGeneratorNumber == 6

    }

    currentCount = 0
    currentCountLabel.text = "\(currentCount)"

    if (flashButton.hidden == true){
        flashButton.hidden = true;
        flashingImageView.hidden = false
    }

    var currentTime = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "timerFunc", userInfo: nil, repeats: false)

    func timerFunc(){
        self.flashingImageView.hidden = true;
        flashButton.hidden = !flashButton.hidden
        flashingImageView.hidden = !flashingImageView.hidden
    }

}

@IBAction func checkButton(sender: UIButton) {


    if (flashButton.hidden == true){
        flashButton.hidden == false
        flashingImageView.hidden == true
    }

    var currentCount = currentCountLabel.text?.toInt()
    if randomImageGeneratorNumber == currentCount {
        currectAmountCorrect += 1
        CorrectLabel.text = "\(currectAmountCorrect)"

    } else {
        currentAmountIncorrect += 1
        IncorrectLabel.text = "\(currentAmountIncorrect)"
    }

    if (currentCountLabel.text == "0"){

        let alert = UIAlertView()
        alert.title = "Alert"
        alert.message = "You must type in an answer in order to check it"
        alert.addButtonWithTitle("Understood")
        alert.show()

}
     currentCount == 0
     currentCountLabel.text = "\(currentCount)"
}


@IBAction func clearButton(sender: UIButton) {
    currentCount = 0
    currentCountLabel.text = "\(currentCount)"
}


@IBAction func Number1Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 1
    currentCountLabel.text = "\(currentCount)"
}

@IBAction func Number2Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 2
    currentCountLabel.text = "\(currentCount)"
}

@IBAction func Number3Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 3
    currentCountLabel.text = "\(currentCount)"
}

@IBAction func Number4Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 4
    currentCountLabel.text = "\(currentCount)"
}

@IBAction func Number5Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 5
    currentCountLabel.text = "\(currentCount)"
}

@IBAction func Number6Button(sender: UIButton) {
    currentCount = currentCount * 10
    currentCount = currentCount + 6
    currentCountLabel.text = "\(currentCount)"
}


override func viewDidLoad() {
    super.viewDidLoad()
    var currentCountLabel = "\(currentCount)"
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

我不知道发生了什么,或者如何解决它。

非常感谢任何意见和建议。

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果你澄清了你希望它的表现方式会有所帮助。如果您想知道为什么它是可选的以及为什么它会返回nil,那么您可以按照以下方式解决此问题。

checkButton()函数中,最后有这一行:

currentCountLabel.text = "\(currentCount)"

currentCount变量展开到此处:

currentCountLabel.text = "\(currentCount!)"

在同一个checkButton()函数中,你有这一行:

currentCount == 0

因此,如果您想知道为什么它不会返回0,因为您使用的是比较运算符而不是赋值运算符。