【问题标题】:IOS - When Slider Value Changed Set UILabel SwiftIOS - 当滑块值改变时设置 UILabel Swift
【发布时间】:2020-10-25 12:04:25
【问题描述】:

我想在uislider更改时设置标签,但是当我在valueChanged中设置标签时,屏幕冻结或父视图消失。

    @IBAction func changedSliderValue(_ sender: UISlider) {
    let value = Int(sliderExtraRepeat.value)
    if lastSliderValue != value {
        self.labelExtraRepeat.text = String(value) + " tekrar daha gelirdi."
        print(String(format: "%.0f", self.sliderExtraRepeat.value))
        lastSliderValue = value
    }
}

当我对带有标签的行进行注释时,滑块可以平滑移动。尽管我挣扎了几个小时,但我还是找不到原因。

【问题讨论】:

    标签: ios swift uislider


    【解决方案1】:

    首先,是否完全有必要拥有一个全局变量“lastSliderValue”? 如果没有,建议将全局变量整体移除。

    试试这个。

        @IBAction func changedSliderValue(_ sender: UISlider) {
    
    // 1. make sure 'Int(sliderExtraRepeat.value)' does not return a value between 0 to 1 
        let value = Int(sliderExtraRepeat.value) 
    
    //2. try this instead.
        labelExtraRepeat.text = String(value) + " tekrar daha gelirdi."
    
    //3. make sure you set UISlider.isContinuous = true
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过在主线程上更新 UI?像这样:-

      @IBAction func changedSliderValue(_ sender: UISlider) {
        let value = Int(sliderExtraRepeat.value)
        if lastSliderValue != value {
      
            DispatchQueue.main.async{
              self.labelExtraRepeat.text = String(value) + " tekrar daha gelirdi."
            }
            
            print(String(format: "%.0f", self.sliderExtraRepeat.value))
            lastSliderValue = value
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-01-05
        • 1970-01-01
        • 2016-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多