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)
}
}
}
我有一个'加上'按钮,我想按下它时,在橘红色(原始)和白色之间切换颜色与相反颜色的文本。根据我可以在网上找到的解决方案,我还检查了目标会员资格,并且唯一的选项已经过检查。
答案 0 :(得分:2)
您的变量tangerine
在viewDidLoad
中被声明为局部常量,因此只能在此方法的范围内访问。您可能想要做的是将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)
}