iOS-视图控制器响应uiview中的数据更改

iOS-视图控制器响应uiview中的数据更改,ios,objective-c,swift,uiview,uiviewcontroller,Ios,Objective C,Swift,Uiview,Uiviewcontroller,我在别人编写的视图控制器中使用了一个颜色选择器(UIView子类),它包含几个处理触摸事件的子视图。颜色选择器有一个公共变量“color”,当用户与子视图交互时,它会更新 public class SwiftHSVColorPicker: UIView { var colorWheel: ColorWheel! ... public var color: UIColor! ... } 见: 我在视图控制器中引用了此颜色选择器视图和标签: @IBOutlet w

我在别人编写的视图控制器中使用了一个颜色选择器(UIView子类),它包含几个处理触摸事件的子视图。颜色选择器有一个公共变量“color”,当用户与子视图交互时,它会更新

public class SwiftHSVColorPicker: UIView {
    var colorWheel: ColorWheel!
    ...

    public var color: UIColor!
    ...
}
见:

我在视图控制器中引用了此颜色选择器视图和标签:

@IBOutlet weak var colorPicker: SwiftHSVColorPicker!
@IBOutlet weak var output: UILabel!

当“颜色”数据从颜色选择器视图更改时,如何更新标签文本 有两种方法:

一,

二,

动态公共变量颜色:UIColor!//添加动态关键字
colorPicker.addObserver(self,forKeyPath:“color”,选项:[.Initial,.New],context:nil)//为颜色添加观察者
重写func observeValueForKeyPath(键路径:String?,对象对象的类型:AnyObject?,更改:[String:AnyObject]?,上下文:UnsafeMutablePointer){
//对颜色做点什么
如果让颜色=更改![NSKeyValueChangeNewKey]为?UIColor{
self.label.textColor=颜色
}
}

谢谢你的回答,它就像一个符咒!我只是在Android中找不到与回调/侦听器等效的iOS。。。
var colorChanged : ((UIColor!)->())?// add a callback for the colorpicker

func hueAndSaturationSelected(hue: CGFloat, saturation: CGFloat) {
    self.hue = hue
    self.saturation = saturation
    self.color = UIColor(hue: self.hue, saturation: self.saturation, brightness: self.brightness, alpha: 1.0)
    brightnessView.setViewColor(self.color)

    self.colorChanged?(self.color) //call it at this method

    selectedColorView.setViewColor(self.color)
}

colorPicker.colorChanged = {[weak self]  color in

        self?.label.textColor = color //do something with your label

}   
dynamic public var color: UIColor! // add the dynamic keyword
colorPicker.addObserver(self, forKeyPath: "color", options:[.Initial, .New], context: nil) // add an observer for the color 


override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    //do something with the color
    if let color = change![NSKeyValueChangeNewKey] as? UIColor {
        self.label.textColor = color
    }

}