Reputation: 41
I'm learning Swift and trying to programmatically change a Label value with a Slider. I get an error in the func says paybackLabel is an unresolved identifier. How should this be done?
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Create Label
let paybackLabel = UILabel(frame: CGRectMake(0, 0, 300, 41))
paybackLabel.center = CGPointMake(190, 284)
paybackLabel.textAlignment = NSTextAlignment.Center
paybackLabel.font = UIFont(name: paybackLabel.font.fontName, size: 40)
paybackLabel.textColor = UIColor.whiteColor()
paybackLabel.text = "Hello World"
self.view.addSubview(paybackLabel)
//Create Slider
let paybackSlider = UISlider(frame: CGRectMake (45,546,310,31))
paybackSlider.minimumValue = 0
paybackSlider.maximumValue = 1000
paybackSlider.continuous = true
paybackSlider.tintColor = UIColor.blueColor()
paybackSlider.value = 500
paybackSlider.addTarget(self, action: "paybackSliderValueDidChange:",forControlEvents: .ValueChanged)
self.view.addSubview(paybackSlider)
}
func paybackSliderValueDidChange(sender: UISlider!)
{
print("payback value: \(sender.value)")
paybackLabel.text = "\(sender.value)"
}
}
Upvotes: 3
Views: 9842
Reputation: 1749
Just Correct Your code as i suggest on here.
1.) Define both variable for Outside for publicly accessing and modifying labels value
var paybackLabel : UILabel = UILabel()
var paybackSlider : UISlider = UISlider()
2.) Put below code in viewDidload()
//Create Label
paybackLabel = UILabel(frame: CGRectMake(10, 20, 100, 41))
paybackLabel.center = CGPointMake(190, 61)
paybackLabel.textAlignment = NSTextAlignment.Center
paybackLabel.font = UIFont(name: paybackLabel.font.fontName, size:10)
paybackLabel.textColor = UIColor.blueColor()
paybackLabel.text = "Hello World"
self.view.addSubview(paybackLabel)
//Create Slider
paybackSlider = UISlider(frame: CGRectMake (45,70,310,31))
paybackSlider.minimumValue = 0
paybackSlider.maximumValue = 1000
paybackSlider.continuous = true
paybackSlider.tintColor = UIColor.blueColor()
paybackSlider.value = 500
paybackSlider.addTarget(self, action: "paybackSliderValueDidChange:",forControlEvents: .ValueChanged)
paybackLabel.text = "\(paybackSlider.value)"
self.view.addSubview(paybackSlider)
3.) Not put function which doing changes for displaying value on label by changing on slidervaluechanged event
func paybackSliderValueDidChange(sender: UISlider!)
{
print("payback value: \(sender.value)")
paybackLabel.text = "\(sender.value)"
}
Result :
Nows its work fine enjoy..
Upvotes: 10
Reputation: 3030
Globally Declare outside of ViewDidLoad()
var paybackLabel = UILabel()
var paybackSlider = UISlider()
and Also don't forget to set userInteractionEnabled to true
paybackLabel.userInteractionEnabled = true
paybackSlider.userInteractionEnabled = true
Upvotes: 2