2017-08-03 9 views
-2

sliderViewにテキストフィールドの変更を表示したいとします。つまり、ユーザーがテキストフィールドの値を変更すると、スライダーの値が更新されるはずです。 2つの親を持つRangeSliderを使用しています。スライダの値は、Webサービス呼び出しに基づいて設定されています。私はappDelegateクラスにレスポンスを格納しています。私はそれをフェッチしています。しかし、問題はUIControlクラスにあります。私はbeginTrackingとEndTrackingでappdelgateの値を取得しています。これらの関数は、スライド(ドラッグ)でいくつかの変更を行う場合にのみ呼び出されます。しかし、テキストフィールドを更新すると、初期化部分だけが呼び出されます。 init関数のappdelegateから値を取得する方法は?uiControlクラスのappdelegate値にアクセスする方法

class RangeSlider: UIControl { 
    var minimumValue = 0.0 
    var maximumValue = 100.0 
    var lowerValue = 0.0 
    var upperValue = 100.0 

    let trackLayer = CALayer() 
    let lowerThumbLayer = RangeSliderThumbLayer() 
    let upperThumbLayer = RangeSliderThumbLayer() 

    var previousLocation = CGPoint() 

    var thumbWidth: CGFloat { 
     return CGFloat(bounds.height) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     trackLayer.backgroundColor = UIColor.yellow.cgColor 
     layer.addSublayer(trackLayer) 

     lowerThumbLayer.backgroundColor = UIColor.black.cgColor 
     layer.addSublayer(lowerThumbLayer) 

     upperThumbLayer.backgroundColor = UIColor.black.cgColor 
     layer.addSublayer(upperThumbLayer) 

     lowerThumbLayer.rangeSlider = self 
     upperThumbLayer.rangeSlider = self 

     updateLayerFrames() 
    } 
} 

答えて

0

あなたは、その内部には、追跡およびエンド追跡を始めるアクセスすることができ、この

let appDelegate = UIApplication.shared.delegate as? AppDelegate 
let someValue = appDelegate?.someVariableInAppDelegate 
+0

イムのようなappDelegateインスタンスにアクセスすることができます....しかし、私はinitメソッドでそれを呼び出すときNANエラーが来ます.. ..なぜそれはそうですか? – Shpuj

+0

アクセスしようとしているときに値が使用可能であることを確認する必要があります。これらの値が利用できないのは初めてです。値を0.0に初期化してみてください。 –

+0

は、最小値= 0.0 するvar最大値= 0.0 するvar lowerValue = 0.0 するvar upperValue = 0.0 ........同じエラーが – Shpuj

関連する問題