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