【问题标题】:How do I save the value of a variable?如何保存变量的值?
【发布时间】:2019-02-26 17:02:04
【问题描述】:

下面是我的代码的简要说明:

var myVar = 0

if (button image is equal to "mybutton image") {
    myVar = 1
    print("It works")
} else {
    myVar = 2
    print("Not working")
}

ButtonPress {
    print(myVar)
}

这里的问题是,当我运行应用程序时,我在控制台中看到它打印“它可以工作”,但是当我再次按下按钮时,myVar 等于 0。如何确保按下按钮时myVar 等于1

这里是要求的完整代码:

@IBAction func ThingyButtton(_ sender: UIButton) {
    if let ButtonImage = myButton.image(for: .normal),
       let Image = UIImage(named: "LoseWeightGreen.png"),
       UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
        thingy = 1
        print("1")
    } else {
        thingy = 2
        print("2")
    }
}

@IBAction func ButtonThingyN(_ sender: UIButton) {
    if(thingy == 1) {
        print("ok")
        let storyboard = UIStoryboard(name: "let", bundle: nil)
        let secondVC = storyboard.instantiateViewController(withIdentifier: "FirstVC")as! FirstVC
        self.navigationController?.pushViewController(secondVC, animated: true) 
    } else{
        print("good")
        let storyboard = UIStoryboard(name: "let", bundle: nil)
        let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondVC")as! SecondVC
        self.navigationController?.pushViewController(secondVC, animated: true)  
    }    
}

【问题讨论】:

  • 你能在你的问题中写出确切的代码吗,问题可能与变量myVar的范围有关
  • 您的代码中似乎存在一些逻辑错误。请在此处输入确切的代码
  • 我刚刚添加了完整的代码,如果需要更多信息,请告诉我谢谢!
  • 对我来说看起来不错。我建议你在课堂上搜索thighy,看看它是否被分配了一些值。另外,如果您可以向我们展示thingy 变量是如何实例化的。
  • 由于您的真实代码与最初的假代码完全不同,请仅使用真实代码重做您的问题,并清楚说明真实代码的问题。

标签: swift button var


【解决方案1】:

我可以使用 UserDefaults 来做到这一点

我只是将 userdefults 设置为 1 和 2,然后使用 if 语句检查它们!

【讨论】:

    【解决方案2】:

    正如我在评论中解释的那样,你需要一些不同的逻辑,尝试使用 switch 而不是 if else ,

    @IBAction func ThingyButtton(_ sender: UIButton) {
        let defaults = UserDefaults.standard
        if let ButtonImage = myButton.image(for: .normal),
           let Image = UIImage(named: "LoseWeightGreen.png"),
           UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
            defaults.set(1, forKey: "thingy")
            defaults.synchronize()
            print("1")
        } else {
            defaults.set(2, forKey: "thingy")
            defaults.synchronize()
    
            print("2")
        }
    }
    
    
    
    @IBAction func ButtonThingyN(_ sender: UIButton) {
        let defaults = UserDefaults.standard
        if defaults.object(forKey: "thingy") != nil {
              let thingy = defaults.integer(forKey: "thingy")
              let storyboard = UIStoryboard(name: "let", bundle: nil)
              switch thingy{
                  case 1:
                      var moveTo = storyboard.instantiateViewController(withIdentifier: "FirstVC") as! FirstVC
              self.navigationController?.pushViewController(moveTo, animated: true)
    
                      break
                  case 2:
                     var moveTo = storyboard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
              self.navigationController?.pushViewController(moveTo, animated: true)
    
                      break
                  default:
                      print("Thingy value is \(thingy)")
                      return
              }
         }
    
    
    
    }
    

    【讨论】:

    • 你为什么要先为"FirstVC"创建一个视图控制器,然后用switch创建另一个视图控制器,扔掉第一个?这没有任何意义。
    • 如果你看到评论说添加默认视图控制器假设他可能有一些默认视图控制器,他可以删除返回并添加中断
    • 答案应该是自包含的,而不是依赖于 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多