2015-06-04 27 views
8

Tôi có thanh trượt và nhãn trong dự án nhanh chóng của mình. Trên bảng phân cảnh, tôi điều khiển kéo thanh trượt của tôi vào lớp điều khiển của tôi cho trang đó và tạo ra một lối thoát và cũng là một hành động. Tôi kiểm soát kéo nhãn khác như một ổ cắm. Tôi đang cố gắng cập nhật nhãn dựa trên giá trị của thanh trượt. Tôi không biết tôi đang đi đâu sai.điều chỉnh nhãn sang giá trị thanh trượt swift

Code:

@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" 
} 

tôi có thể nhìn thấy trong log các funciton sliderValueChanged đang được kêu gọi và nhật ký được in giá trị nhưng văn bản của nhãn không được cập nhật. Tôi đang làm gì sai?

Cập nhật:

tôi chỉ cần đặt một đối tượng trượt và nhãn trên màn hình đăng nhập của tôi và sử dụng các phương pháp và mã tương tự để thay đổi văn bản nhãn và nó làm việc nhưng nó sẽ không làm việc bên trong điều khiển thanh tab của tôi. Điều này có làm sáng tỏ vấn đề có thể là gì không?

+0

Thanh trượt có được liên kết chính xác như IBOutlet không? Ngoài ra, tôi giả sử bạn đang gọi điều này từ người dùng thay đổi giá trị thanh trượt chứ không phải từ quá trình nền? – Chackle

+0

@Chạy Bằng cách liên kết chính xác, ý bạn là gì? Tôi kiểm soát kéo nhãn sliderVal đến lớp điều khiển của tôi và chọn tùy chọn đầu ra. Nó đang được gọi khi người dùng thay đổi giá trị – user2363025

+0

Đó chính là điều tôi muốn nói. Tôi sẽ xem xét và thử và nhân rộng vấn đề bản thân mình ở đây. Hy vọng rằng tôi có thể giúp thanh trượt – Chackle

Trả lời

1

thử

var currentValue = Int(slider.value) 
    println("Slider changing to \(currentValue) ?") 
    startTime.text = "\(currentValue) Km" 
+2

cùng một kết quả. Giá trị đang thay đổi trong nhật ký nhưng không phải trên nhãn – user2363025

+0

ok i wii kiểm tra .... –

+0

có thể kiểm tra trong một dự án có bộ điều khiển thanh tab. Tab này cũng có bộ điều khiển điều hướng. Nên có bất cứ điều gì trong lớp thanh tab tùy chỉnh của tôi ngoài các tiêu chuẩn: lớp HomeController: UIViewController { – user2363025

5

Cập nhật giá trị thanh trượt này trong hàng đợi chính

@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" 
    }) 
} 

Tôi hy vọng điều này là hữu ích cho bạn.

+0

cùng một vấn đề. Đăng nhập cập nhật nhưng không phải là nhãn .. – user2363025

0

Nếu bạn muốn thực hiện theo cách lập trình, đây là một cách.

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 
) 

Hy vọng điều này là hữu ích :)

0

Swift 3: Chọn .allEvents cho UIControlEvents của nó.

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)") 
    } 
} 
Các vấn đề liên quan