2016-05-06 8 views
1

他の人が作成したビューコントローラでカラーピッカー(UIViewサブクラス)を使用していて、タッチイベントを処理するいくつかのサブビューが含まれています。カラーピッカーにはpublic変数「color」があり、ユーザーがサブビューとやりとりするときにが更新され、に更新されます。iOS - ビューコントローラがuiviewからのデータ変更に応答する

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

    public var color: UIColor! 
    ... 
} 

参照:私は私のビューコントローラでは、このカラーピッカービューやラベルを参照したhttps://github.com/johankasperi/SwiftHSVColorPicker/blob/master/Source/SwiftHSVColorPicker.swift

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

私はラベルテキストを更新するにはどうすればよいたび「色」データはカラーピッカービューから変更されますか?

答えて

1

あなたは、2つの方法があります 変更する必要が可能であれば:答えを

1.

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 

} 

2.

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 
    } 

} 
+0

おかげで、それは魔法のように動作します!私はAndroidでコールバック/リスナーと同等のiOSを見つけられませんでした... –

関連する問題