2016-06-26 7 views
0

Ich habe einen Schieberegler und eine Beschriftung erstellt, um den Wert des Schiebereglers anzuzeigen. Beide getan programmatisch:'sliderChanged: unerkannter Selektor an Instanz gesendet'

class FilterCell: UITableViewCell { 

override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    setupViews() 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

let slider : UISlider = { 
    let slider = UISlider() 
    slider.minimumValue = 0 
    slider.maximumValue = 50 
    slider.value = 50 
    slider.continuous = true 
    slider.userInteractionEnabled = true 
    slider.translatesAutoresizingMaskIntoConstraints = false 
    return slider 
}() 

var distanceLabel : UILabel = { 
    let label = UILabel() 
    label.text = "Distance: 50km" 
    label.font = UIFont.systemFontOfSize(15.0) 
    label.textColor = UIColor.blackColor() 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}() 

func sliderChanged(sender: UISlider) { 
    var sliderValue = sender.value 
    distanceLabel.text = "Distance: \(sliderValue)km" 
} 
} 

in meinem Tableview nenne ich die Funktion, den Wert des Schiebereglers zu ändern:

func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier(filterCellId) as! FilterCell 
    cell.slider.addTarget(self, action: #selector(FilterCell.sliderChanged(_:)), forControlEvents: .ValueChanged) 

    return cell 

} 

Der Schieber und das Label Display in Ordnung. Wenn ich mit dem Schieberegler interagiere, um den Wert zu ändern, stürzt er ab und 'sliderChanged:]: unerkannter Selektor wird an Instanz 0x7fb06d0df040 gesendet'.

+0

Das nächste Mal, wenn Sie ein „Unbekannter Selektor“ Fehler erhalten, umfassen die vollständige Fehlermeldung (wie das Bit vor dem „' sliderChanged'“) sagt uns etwas wichtig, nämlich mit welcher Art von Objekt versucht wurde, den Selektor durchzuführen. – Rob

Antwort

2

Versuchen hinzufügen Ziel cell, nicht self

cell.slider.addTarget(cell, action: #selector(FilterCell.sliderChanged(_:)), forControlEvents: .ValueChanged) 
+0

funktioniert perfekt dank – luke

+0

Selbst bezieht sich immer auf die Aufsicht Klasse, die in diesem Fall ist wahrscheinlich ein UIViewController. – Sethmr

+0

Ja, wenn Sie die Methode 'sliderChanged' in Ihrem View-Controller platzieren, übergeben Sie stattdessen' self'. –

Verwandte Themen