新手不能为我的生活弄清楚这一点。 swift xcode

时间:2016-06-12 02:59:53

标签: ios swift

我试图在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]
}        

2 个答案:

答案 0 :(得分:3)

问题是这一行:

let colorchoice = self.ColorArray[self.colorindex]

在任何函数之外出现(请注意,它位于ColorSwitchButton函数的结束大括号之后)。因此,它位于类声明的顶层,并声明属性colorchoice。但是您不能声明引用另一个属性(self.ColorArrayself.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)