【问题标题】:Counting score with swift快速计算分数
【发布时间】:2016-04-07 18:38:44
【问题描述】:

现在,我的问题是,当我尝试计算分数线时,如果有人在文本字段中写的内容与“42”不同(与 label.text 相同),他们会得到扣1分。如果我写的东西不是“42”,它会给我 1 分,但只是第一次。如果我再做一次,比分不会改变,所以我会被困在 -1 的比分上。

每次我写的东西不是“42”时,我怎么能这样做,即使我已经得到 -1 分,它也会给我 -1 分?

(如您所见,如果您想知道,我已将 label.text 设置为与 textfield.text 相同)

import UIKit

    class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

        // MARK: PROBERTIES
        @IBOutlet weak var label: UILabel!

        @IBOutlet weak var textField: UITextField!
        @IBOutlet weak var scoreLabel: UILabel!

        @IBOutlet weak var photoImageView: UIImageView!
        @IBOutlet weak var label2: UILabel!
        @IBOutlet weak var label1: UILabel!
        let imagePicker = UIImagePickerController()

        override func viewDidLoad() {
            super.viewDidLoad()


            textField.delegate = self
            imagePicker.delegate = self

        }


        func textFieldShouldReturn(textField: UITextField) -> Bool {

            textField.resignFirstResponder()

            return true
        }
        func textFieldDidEndEditing(textfield: UITextField) {
            label.text = textField.text
            var score = 0


            if textField.text != "42" {
                score -= 1
            }

            // MARK: if-statements

            if label.text! == "42" {
                label1.text = "You are correct"
                self.view.backgroundColor = UIColor.greenColor()
                score += 10
            }

            if label.text != "42" {
                label1.text = "Damn, wrong"
                self.view.backgroundColor = UIColor.redColor()

            }

            if label.text!.isEmpty {
                label1.text = "Still waiting for an answer..."

            }

            if label.text == "happiness" {
                label1.text = "It is not a key element in the meaning of life"

            }

            if label.text == "to be happy" {
                label1.text = "i would rather be rich"

            }

            if label.text == "money" {
                label1.text = "there is more in this world than money"

            }

            if label.text == "There is no meaning of life" {
                label1.text = "There is a meaning to everything"

            }

            if label.text == "there is no meaning of life"
            {
                label1.text = "there is a meaning to everything"

            }

            if label.text == "to be rich" {
                label1.text = "Money does not solve every problem"


            }

            var scoreString = String(score)
            scoreLabel.text = "Your score is \(scoreString)"


        }

【问题讨论】:

  • 嗨,你到底是什么意思“我怎么能这样做,每次我写一些不是“42”的东西时,即使我已经得到了 -1 分,它也会给我 -1 分? ",例如你有 100 分,不输入 42 会给你 99 分,如果你再不输入 42 那么它会保持在 99?还是98?
  • 我的意思是我只能触发一次“-1”(如果我写的不是“42”)和“+10”(如果我写“42”)一次。例如,我从分数线 0 开始写不等于 42 的内容,然后我结束文本字段编辑,我的 scoreLabel 更改为“您的分数 -1”,但是当我再次开始编辑并写不等于“42”的内容时" 那么我的 scoreLabel 看起来还是一样的 "Your score -1"

标签: swift if-statement count label textfield


【解决方案1】:

添加从您的 ViewController 对象到文本字段的 Editing Changed 出口的连接。当字段的文本更改时,将调用您连接的任何方法。

【讨论】:

    【解决方案2】:

    我一直在寻找其他东西,但我想我会与我的标签分享不久前让我摆脱困境的东西,这些标签持有的整数变回了我不知道的字符串。

    var pointsCount = 0
    
    func addPoints(_ points: NSInteger)
    {
        if let text = self.pointsLabel.text, var pointsCount = Int(text)
        {
            pointsCount += points
            pointsLabel.text = "\(pointsCount)"
        }
    }
    

    要添加 2 个点,只需使用

    addPoints(2)
    

    【讨论】:

      猜你喜欢
      • 2016-01-26
      • 1970-01-01
      • 2016-02-21
      • 2011-04-13
      • 1970-01-01
      • 2012-02-13
      • 2011-08-31
      • 2013-08-30
      • 2010-12-23
      相关资源
      最近更新 更多