2016-09-14 1 views
0

Ich brauche deine Hilfe, weil ich nicht verstehe, was mit meinen automatischen Beschränkungen geschieht. Die Einschränkungen meines Schalters lassen die App zum Absturz bringen. Wenn ich sie entferne, funktioniert es gut. Dies ist die Fehlermeldung, die ich bekomme: Kann '|' nicht interpretieren Zeichen, weil die zugehörige Sicht keine Superview H: | -100- [v0 (35)] |Kann '|' nicht interpretieren Zeichen

thx für Ihre Hilfe

Hier ist mein Code:

class selectionCustomCell: UITableViewCell{ 
    var label: UILabel = { 
     let attribution = UILabel() 
     attribution.text = "Nom du label" 
     attribution.textColor = UIColor(r: 0, g: 185, b: 255) 
     attribution.lineBreakMode = NSLineBreakMode.ByWordWrapping 
     attribution.numberOfLines = 0 
     attribution.translatesAutoresizingMaskIntoConstraints = false 
     return attribution 
    }() 

    var switchElement: UISwitch{ 
     let sL = UISwitch() 
     sL.setOn(true, animated: true) 
     sL.onTintColor = UIColor(r: 0, g: 185, b: 255) 
     sL.tintColor = UIColor(r: 0, g: 185, b: 255) 
     sL.translatesAutoresizingMaskIntoConstraints = false 
     return sL 
    } 

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

    func setupViews(){ 
     addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": label]))   
     addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[v0]", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": label])) 


     addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-100-[v0(35)]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": switchElement])) 


     addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[v0(35)]", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": switchElement])) 


    } 

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

} 

Antwort

6

Beachten Sie den Unterschied zwischen dem, wie label und switchView deklariert: label mit dem Ausgang eines Verschlusses initialisiert wird, der die erste ausgeführt wird Mal wird darauf verwiesen. switchView ist eine berechnete Eigenschaft mit einem Getter, der jedes Mal aufgerufen wird, wenn darauf verwiesen wird, was bedeutet, dass die Versionen, auf die Sie in -setupViews verweisen, nicht mit denen identisch sind, die Sie zuvor -addSubview aufgerufen haben. Da sie nicht zu einer Ansichtshierarchie gehören, ist das visuelle Format ungültig.

Wenn Sie die Deklaration von switchView machen entsprechen die Deklaration von label, soll Ihr Code wie erwartet:

var switchElement: UISwitch = { // note the equal operator here 
    let sL = UISwitch() 
    // ... 
    return sL 
}() // note the invocation of the block here 
+0

Thx you very much. Es klappt !!! Ich zog mir die Haare aus –

Verwandte Themen