Ios 在Swift中使用UISlider以编程方式更改UILabel
我正在学习Swift,并尝试使用滑块以编程方式更改标签值。我在func中得到一个错误,说paybackLabel是一个未解析的标识符。如何做到这一点Ios 在Swift中使用UISlider以编程方式更改UILabel,ios,swift,uilabel,uislider,Ios,Swift,Uilabel,Uislider,我正在学习Swift,并尝试使用滑块以编程方式更改标签值。我在func中得到一个错误,说paybackLabel是一个未解析的标识符。如何做到这一点 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //Create Label let paybackLabel = UILabe
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)"
}
}
在ViewDidLoad()之外全局声明 另外,不要忘记将userInteractionEnabled设置为true
paybackLabel.userInteractionEnabled = true
paybackSlider.userInteractionEnabled = true
请按照我在这里的建议更正代码 1.)为外部定义两个变量,以便公开访问和修改标签值
var paybackLabel : UILabel = UILabel()
var paybackSlider : UISlider = UISlider()
2.)将下面的代码放入viewDidload()中
3.)不放置通过更改slidervaluechanged事件来更改标签上显示值的函数
func paybackSliderValueDidChange(sender: UISlider!)
{
print("payback value: \(sender.value)")
paybackLabel.text = "\(sender.value)"
}
结果:
现在它的工作很好享受..是的,事实上代码不应该编译。你必须将viewDidLoad外部的paybackLabel声明为var,并在viewDidLoad中修改它,然后更改PaybackSliderValueDidChange中的文本请检查我给出的答案。如果它的工作正确,请接受我的答案并投票。谢谢。userInteractionEnabled做什么?似乎标签和滑块在没有它的情况下可以工作。另外,为什么要将var paybackSlider声明为全局变量?似乎没有它也行。
//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)
func paybackSliderValueDidChange(sender: UISlider!)
{
print("payback value: \(sender.value)")
paybackLabel.text = "\(sender.value)"
}