2016-01-21 13 views
0

我製作了滑塊和標籤PROGRAMMATICALLY。我希望標籤顯示滑塊的值,但標籤只顯示最初分配的值。當我以編程方式製作滑塊時,爲什麼滑塊不更新標籤?

代碼:

var num: CGFloat = 9 

override func viewDidLoad() { 
    let label = UILabel(frame: CGRectMake(0, 0, 60, 40)) 
    label.text = "\(num)" 
    self.view.addSubview(label) 

    let slider = UISlider(frame:CGRectMake(0, 0, 60, 30)) 
    slider.value = Float(num) 
    slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged) 
    self.view.addSubview(slider) 
} 

func changedSliderValue(sender: UISlider!){ 
    num = CGFloat(sender.value) 
    label.text = "\(num)" 
} 

當我做print(label.text!),它向我表明label.text被改變,因爲我改變了滑塊值。但那麼,爲什麼我的視圖控制器上的標籤沒有更改?

回答

0

你必須創建IBAction爲與滑塊如下圖所示代碼:

@IBAction func sliderValueChanged(sender: UISlider) { 

    num = sender.value 
    label.text = "\(num)" 
} 

欲瞭解更多信息請參閱THIS教程。

更新:

下面是完整的工作代碼:

import UIKit 

class ViewController: UIViewController { 

    var num: CGFloat = 9 
    let label = UILabel(frame: CGRectMake(0, 0, 60, 40)) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     label.text = "\(num)" 
     self.view.addSubview(label) 

     let slider = UISlider(frame:CGRectMake(0, 0, 60, 30)) 
     slider.value = Float(num) 
     slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged) 
     self.view.addSubview(slider) 
    } 

    func changedSliderValue(sender: UISlider!){ 
     num = CGFloat(sender.value) 
     label.text = "\(num)" 
    } 
} 
+0

對不起,如果我沒有說清楚,但我以編程方式創建了滑塊和標籤** – Amanda

+0

你能顯示你的完整代碼嗎? –

+0

比編程設置目標滑塊@Amanda像'slider.addTarget(self,action:「sliderValueChanged:」,forControlEvents:.ValueChanged)'...更多信息...檢查http://www.apptuitions.com/programmatically -creating-uiview-uislider-uiswitch-using-swift/ –

0

請確保您有綁定行動滑塊.... 這裏num是CGFloat的價值和sender.value是浮動...

var num: CGFloat = 9 
label.text = "\(num)" 

@IBAction func sliderValueChanged(sender: UISlider) { 
    num = CGFloat(sender.value) 
    label.text = "\(num)" 
} 
+0

綁定你的slider'es動作ValueChanged ....你必須轉換爲CGFloat – Bhoomi