【问题标题】:Need some help making an undo button in Swift [closed]需要一些帮助在 Swift 中制作撤消按钮 [关闭]
【发布时间】:2021-09-26 02:55:06
【问题描述】:

我对 Swift 和 iOS 开发还很陌生,所以我有点卡在这个问题上。我制作了这个应用程序,它可以在按下按钮时更改图像视图正方形的背景颜色。颜色是从 RGB 光谱中随机选择的。现在我需要一个将背景颜色设置为以前颜色的撤消按钮。

这是我到目前为止所得到的。

var previousColor: UIColor?
    @IBAction func didPressRandomButton(_ sender: Any) {
        let randomRed = CGFloat.random(in: 0...1)
        let randomGreen = CGFloat.random(in: 0...1)
        let randomBlue = CGFloat.random(in: 0...1)
        let color = UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1)
        previousColor = color
        imageDisplay.backgroundColor = color
    }
    @IBAction func didPressUndoButton(_ sender: Any) {
        if previousColor != nil{
            imageDisplay.backgroundColor = previousColor!
        }
    }
}

【问题讨论】:

  • 什么不起作用?逻辑看起来是正确的。而你 if let previousColor = previousColor 而不是 docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html
  • 只是猜测,因为您还没有真正告诉我们问题出在哪里。它是否在您对previousColor 的强制展开时崩溃了?或者您是否获得了 nil 的价值?

标签: ios swift button undo


【解决方案1】:

由于您的问题不清楚,我猜您需要在按下 RANDOM 按钮时更改颜色,并在按下 UNDO 按钮时撤消更改。

这里的问题似乎是您在按下 RANDOM 按钮时覆盖了 previousColor。尝试这样做

   var previousColor: UIColor?
        
   @IBAction func didPressRandomButton(_ sender: Any) {

            previousColor = imageDisplay.backgroundColor

            let randomRed = CGFloat.random(in: 0...1)
            let randomGreen = CGFloat.random(in: 0...1)
            let randomBlue = CGFloat.random(in: 0...1)
            
            let color = UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1)
          
            imageDisplay.backgroundColor = color
   }

   @IBAction func didPressUndoButton(_ sender: Any) {
            if previousColor != nil{
                imageDisplay.backgroundColor = previousColor!
            }
            
   }

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 2015-08-29
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多