【问题标题】:how to access appdelegate value in uiControl class如何在 uiControl 类中访问 appdelegate 值
【发布时间】:2017-08-03 06:18:13
【问题描述】:

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

【问题讨论】:

    标签: swift rangeslider


    【解决方案1】:

    你可以像这样访问 appDelegate 实例

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

    【讨论】:

    • 我可以访问里面的开始跟踪和结束跟踪....但是当我在init方法中调用它时会出现NAN错误......为什么会这样?
    • 需要确保这些值在您尝试访问它们时可用。可能是第一次这些值不可用。尝试将值初始化为 0.0 。
    • 已经在 appDelegate 和 UIControl 类中初始化了值..var minimumValue = 0.0 var maximumValue = 0.0 var lowerValue = 0.0 var upperValue = 0.0........同样的错误来了
    • 我有一个表达式来计算 lowerThumbLayer.frame 即 lowerThumbLayer.frame= CGRect(x: lowerThumbCenter - thumbWidth / 2.0, y: 0.0, width: thumbWidth, height: thumbWidth)。这里给出NAN.由于我已将值初始化为 0,当我尝试将 0 除以某个值时,NAN 错误即将到来。
    • 不要除以零。放置 if 条件并避免它
    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 2014-09-23
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多