Swiftプロジェクトにスライダーとラベルがあります。ストーリーボードで、スライダーをそのページのコントローラークラスにドラッグし、アウトレットとアクションを作成します。別のラベルをドラッグしますスライダーの値に基づいてラベルを更新しようとしていますが、どこが間違っているのかわかりません。
コード:
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var sliderVal: UILabel!
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
println("Slider changing to \(currentValue) ?")
sliderVal.text = "\(currentValue) Km"
}
ログでは、sliderValueChanged関数が呼び出され、ログは値を出力していますが、ラベルのテキストは更新されていません。私は何を間違えていますか?
更新:
ログイン画面にスライダーオブジェクトとラベルを配置し、同じ方法とコードを使用してラベルテキストを変更しただけで機能しましたが、Tab Bar Controller内では機能しません。これにより、問題の原因が明らかになりますか?
メインキューのスライダー値を更新する
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
println("Slider changing to \(currentValue) ?")
dispatch_async(dispatch_get_main_queue(){
sliderVal.text = "\(currentValue) Km"
})
}
これがあなたのお役に立てば幸いです。
これを試して
var currentValue = Int(slider.value)
println("Slider changing to \(currentValue) ?")
startTime.text = "\(currentValue) Km"
クラスViewController:UIViewController {
@IBOutlet weak var imgView: UIImageView!
@IBOutlet weak var slideroutlet: UISlider!
@IBOutlet weak var lblValue: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func slider(_ sender: Any) {
lblValue.text = String(slideroutlet.value)
imgView.alpha = CGFloat(slideroutlet.value)
}
Swift 3:UIControlEventsに.allEventsを選択します。
slider.addTarget(self, action: #selector(ViewController.updateKmsLabel(sender:)), for: .allEvents)
// To use
func updateKmsLabel(sender: UISlider!) {
let value = Int(sender.value)
DispatchQueue.main.async {
self.kmsLabel.text = "\(value)"
print("Slider value = \(value)")
}
}
プログラムで実行する場合、これは1つの方法です。
var slider: UISlider()
var label: UILabel()
func numberValueChanged(sender: UISlider) {
slider.setValue(Float(Int(slider.value)), animated: true)
updateLabels(slider.value)
}
fun updateLabels(nV: Float?) {
if let v = nV {
self.label.text = "\(v)"
}
}
slider.addTarget (self,
action: #selector(numberValueChanged)
forControlEvents: UIControlEvents.ValueChanged
)
これが役に立てば幸いです:)