Ios 调用数组中的下一个元素

Ios 调用数组中的下一个元素,ios,arrays,swift,Ios,Arrays,Swift,我正在尝试更新xColor中的值,以便它可以从colorPalette中获取不同的颜色。如您所见,colorPalette[xColor].CGColor正在检查要使用的颜色。我在尝试用滑动手势更新xColor时遇到了问题,因此它无法捕获数组中的不同元素。任何建议都会有帮助 Canvas.swift: var xColor = 0 var colorPalette = [UIColor.blueColor(), UIColor.yellowColor(), UIColor.red

我正在尝试更新xColor中的值,以便它可以从colorPalette中获取不同的颜色。如您所见,colorPalette[xColor].CGColor正在检查要使用的颜色。我在尝试用滑动手势更新xColor时遇到了问题,因此它无法捕获数组中的不同元素。任何建议都会有帮助

Canvas.swift:

    var xColor = 0
    var colorPalette = [UIColor.blueColor(), UIColor.yellowColor(), UIColor.redColor(), UIColor.redColor()]

    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        let color = colorPalette[xColor].CGColor
        CGContextSetFillColorWithColor(context, color)
        let rect = CGRect(x: x - r, y: y - r, width: 2 * r, height: 2 * r)
        CGContextFillEllipseInRect(context, rect)
}
ViewController.swift:

func handleSwipes(sender:UISwipeGestureRecognizer) {

    let cv = CanvasView()

    if (sender.direction == .Left) {
        cv.xColor--
        print("Swipe left!")
    }

    if (sender.direction == .Right) {
        cv.xColor++
        print("Swipe right!")
    }
    print(cv.xColor)
}

您的代码有两个问题。第一条是这一行:

let cv = CanvasView()
这将创建一个新的CanvasView,但新的CanvasView与界面中已显示的旧CanvasView不同。不幸的是,你需要和那张老画布谈谈


第二个问题是,一旦你与旧的画布视图交谈,你没有告诉它需要重新绘制。您需要向其发送
setNeedsDisplay
消息。

当然,还有一个问题是,如果用户继续朝同一方向刷卡,应用程序将崩溃。但是当你走到那座桥的时候,你必须穿过那座桥。创建新的画布视图不好。对于这两者来说,什么是更好的互动方式?