Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在uiControl类中访问appdelegate值_Swift_Rangeslider - Fatal编程技术网

Swift 如何在uiControl类中访问appdelegate值

Swift 如何在uiControl类中访问appdelegate值,swift,rangeslider,Swift,Rangeslider,我想在sliderView中显示文本字段的更改。即,当用户更改文本字段中的值时,滑块值应更新。我使用的是一个有两个拇指的范围滑块。滑块值是基于webservice调用设置的。我将响应存储在appDelegate类中并获取它。但问题是在UIControl类中,我在beginTracking和EndTracking中获取appdelgate值。只有在幻灯片(拖动)中进行某些更改时,才会调用这些函数。但是在更新textfield时,只调用初始化部分。如何在init函数中从appdelegate获取值

我想在sliderView中显示文本字段的更改。即,当用户更改文本字段中的值时,滑块值应更新。我使用的是一个有两个拇指的范围滑块。滑块值是基于webservice调用设置的。我将响应存储在appDelegate类中并获取它。但问题是在UIControl类中,我在beginTracking和EndTracking中获取appdelgate值。只有在幻灯片(拖动)中进行某些更改时,才会调用这些函数。但是在更新textfield时,只调用初始化部分。如何在init函数中从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()
    }
}

您可以像这样访问appDelegate实例

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

我可以访问内部开始跟踪和结束跟踪。。。。但当我在init方法中调用它时,会出现一个错误……为什么会这样?需要确保在尝试访问这些值时这些值是可用的。这些值可能是第一次不可用。尝试将值初始化为0.0。在appDelegate和UIControl类中初始化值。.var minimumValue=0.0 var maximumValue=0.0 var lowerValue=0.0 var upperValue=0.0……。同样的错误也会出现。我有一个表达式来计算lowerThumbLayer.frame,即lowerThumbLayer.frame=cRect(x:lowerThumbCenter-thumbWidth/2.0,y:0.0,width:thumbWidth,height:thumbWidth)。这里给出的是NAN。由于我已将值初始化为0,当我尝试将0除以某个值时,NAN将出现错误。不要除以0。请设置if条件并避免它