Swift 4:"使用未解析的标识符"这是我在前面宣布的

时间:2018-04-03 13:55:28

标签: swift

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var plusButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        let tangerine = plusButton.backgroundColor
    }

    func changeButtonState(button: UIButton) {
        if plusButton.backgroundColor ==  tangerine { //Use of unresolved identifier 'tangerine'
            plusButton.backgroundColor = UIColor.white
            plusButton.setTitleColor(tangerine, for: .normal) //Use of unresolved identifier 'tangerine'
        } else {
            plusButton.backgroundColor = tangerine //Use of unresolved identifier 'tangerine'
            plusButton.setTitleColor(UIColor.white, for: .normal)
        }
    }
}

我有一个'加上'按钮,我想按下它时,在橘红色(原始)和白色之间切换颜色与相反颜色的文本。根据我可以在网上找到的解决方案,我还检查了目标会员资格,并且唯一的选项已经过检查。

4 个答案:

答案 0 :(得分:2)

您的变量tangerineviewDidLoad中被声明为局部常量,因此只能在此方法的范围内访问。您可能想要做的是将tangerine声明为成员变量并将其分配到viewDidLoad

@IBOutlet weak var plusButton: UIButton!
var tangerine: UIColor?

override func viewDidLoad() {
  super.viewDidLoad()
  tangerine = plusButton.backgroundColor
}

答案 1 :(得分:1)

您已将tangerine声明为viewDidLoad()方法中的局部变量。尝试这样的事情:

@IBOutlet weak var plusButton: UIButton!

var tangerine: UIColor!

override func viewDidLoad() {
    super.viewDidLoad()
    tangerine = plusButton.backgroundColor
}

答案 2 :(得分:1)

简单地说,当在方法或函数中声明某些内容时,它将无法在该函数之外访问。如果要全局使用变量,则必须全局声明它。此外,如果您想稍后编辑它,则不能使用let语句。

答案 3 :(得分:0)

您的问题是您在viewdidload中的特定范围内声明了您的变量,并且您正试图从另一个func访问它。

您所要做的就是将代码更改为:

@IBOutlet weak var plusButton: UIButton!

var tangerine = UIColor()

override func viewDidLoad() {
     super.viewDidLoad()
     tangerine = plusButton.backgroundColor
}

func changeButtonState(button: UIButton) {
    if plusButton.backgroundColor ==  tangerine { //Use of unresolved identifier 'tangerine'
        plusButton.backgroundColor = UIColor.white
        plusButton.setTitleColor(tangerine, for: .normal) //Use of unresolved identifier 'tangerine'
    } else {
        plusButton.backgroundColor = tangerine //Use of unresolved identifier 'tangerine'
        plusButton.setTitleColor(UIColor.white, for: .normal)
    }
}

@IBAction func plusPressed(_ sender: UIButton) {
    changeButtonState(button: plusButton)
}