簡體   English   中英

Swift-UISlider不會改變其值

[英]Swift - UISlider doesn't change its value

我以編程方式創建了一個UISlider,並且創建了一個在每次更改滑塊值時都會運行的動作。 這些動作將打印出slider.value。 問題是打印出的值始終為0。即使我移動滑塊也是如此。 這是代碼:

import UIKit

class EditVC: UIViewController {

var slider : UISlider {
    let frame = CGRect(x: 10, y: 85, width: editView.frame.width - 30, height: 20)
    let slider = UISlider(frame: frame)
    slider.minimumValue = 0
    slider.maximumValue = 10
    slider.isContinuous = true
    slider.addTarget(self, action: #selector(valueChangedFunc), for: .valueChanged)

    return slider

    }

@objc func valueChangedFunc() {
    print(slider.value)
}



override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(slider)   
}
}

我移動了一些代碼,並刪除了函數中的@objc。

 import UIKit

class EditVC: UIViewController {

func addSlider() -> UISlider {
        let frame = CGRect(x: 10, y: 85, width: editView.frame.width - 30, height: 20)
        let slider = UISlider(frame: frame)
        slider.minimumValue = 0
        slider.maximumValue = 10
        slider.isContinuous = true
        slider.addTarget(self, action: #selector(valueChangedFunc), for: .valueChanged)

    return slider

    }

func valueChangedFunc() {
    print(slider.value)
}



override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(addSlider())   
}
}

您可以使用此代碼,我已經對其進行了測試,並且可以正常工作

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    createMPSlider()
}

func createMPSlider()
{
    let mSlider = UISlider(frame: CGRect(x: 20, y: 200, width: UIScreen.main.bounds.size.width * 0.55, height: 60))
    mSlider.addTarget(self, action: #selector(valueChangedOfSlider(slider:)), for: .valueChanged)
    view .addSubview(mSlider)
}

func valueChangedOfSlider(slider: UISlider)
{
    print(slider.value)
}

上面的代碼工作正常。 您需要做的是復制這兩個完整的函數createMPSlider()和valueChangedOfSlider(slider:UISlider)並將其粘貼到您的視圖控制器上,然后從viewDidLoad調用createMPSlider()它將起作用。 如果需要,可以在頂部聲明是否要更改自定義滑塊或使用它的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM