我试图在xcode中构建一个简单的应用程序来快速自学。我一直在下面的代码的最后一行收到错误,我无法弄明白。当编译时,它表示此ColorArray未在此视图中定义。
class Colors: UIViewController {
@IBOutlet var Colorbox: UIView!
@IBOutlet var colorLabel: UILabel!
var colorindex = 0
var ColorArray = [
UIColor.redColor(),
UIColor.orangeColor(),
UIColor.yellowColor(),
UIColor.greenColor(),
UIColor.blueColor(),
UIColor.purpleColor(),
UIColor.blackColor()
]
var colornamesarray = [
"Red",
"Orange",
"Yellow",
"Green",
"Blue",
"Purple",
"Black"
]
@IBAction func ColorSwitchButton(sender: UIButton) {
self.colorindex = self.colorindex+1
print ("rotateColor: \(self.colorindex)")
if (self.colorindex == self.colornamesarray.count){
self.colorindex = 0}
}
let colorchoice = self.ColorArray[self.colorindex]
}
答案 0 :(得分:3)
问题是这一行:
let colorchoice = self.ColorArray[self.colorindex]
在任何函数之外出现(请注意,它位于ColorSwitchButton函数的结束大括号之后)。因此,它位于类声明的顶层,并声明属性colorchoice
。但是您不能声明引用另一个属性(self.ColorArray
和self.colorindex
)的属性。
答案 1 :(得分:-1)
我肯定知道我哪里错了。但我认为一个可能的解决方案是使用colorchoice
的计算属性,如下所示:
let colors = [UIColor.redColor(), UIColor.blueColor()]
let colorIndex = 0
var colorchoice: UIColor {
return colors[colorIndex]
}
错误的第一句话:(供参考)
可能colorindex
永远不应该= colornamesarray.count
因为swift中的数组是零索引的。您可能需要尝试使用if colorindex == (colornamesarray.count - 1)
。