2016-08-19 2 views
1

Ich versuche, meine Seite Menü style, möchte ich die UISwitch, um die Beschriftung neben ihm zu bearbeiten. Aber die denken nur, dass passiert, wenn ich auf dem Schalter klicken ist, dass die App abstürzt und ich erhalte folgende FehlermeldungSwift Add-Schalter programmgesteuert im Seitenmenü

2016-08-20 01: 56: 20,545 Moppio [4342: 8.394.913] - [Moppio.BackTableViewController test()]: nicht erkannter Selektor an Instanz 0x7fe66a4ba530 gesendet 2016-08-20 01: 56: 20.554 Moppio [4342: 8394913] * App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException' beenden, Grund: '- [Moppio.BackTableViewController-Test ()]: Unbekannter Selektor zum Beispiel 0x7fe66a4ba530' gesendet * ersten Wurf Call-Stack: ...

Und das ist die code, die ich gerade benutze.

 //Profile picture + bar 
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{ 
    let view = UIView(frame: CGRectMake(0, 0, tableView.bounds.size.width, 60)) 
    view.backgroundColor = UIColor(red:0.40, green:0.40, blue:0.40, alpha:1.0) 

    let profileImageView = UIImageView(frame: CGRectMake(20, 5, 50, 50)) // Change frame size according to you... 
    profileImageView.image = UIImage(named: "profile.png") //Image set your 
    view.addSubview(profileImageView) 

    let LabelStatus = UILabel(frame: CGRectMake(0, 0, 200, 21)) 
    LabelStatus.center = CGPointMake(120, 32) 
    LabelStatus.textColor = UIColor(red:0.95, green:0.95, blue:0.95, alpha:1.0) 
    LabelStatus.font = UIFont(name: "BebasNeue", size: 24) 
    LabelStatus.textAlignment = NSTextAlignment.Center 
    self.view.addSubview(LabelStatus) 

    let switchStatus=UISwitch(frame:CGRectMake(195, 15, 20, 20)) 

    func test() { 
    if (switchStatus.on == true){ 
     LabelStatus.text = ("Available") 
     print("on") 
    } 
    if (switchStatus.on == false){ 
     LabelStatus.text = ("Not available") 
     LabelStatus.center = CGPointMake(130, 32) 
     print("off") 
    } 
    } 

    switchStatus.on = true 
    switchStatus.setOn(true, animated: false); 
    switchStatus.addTarget(self, action: "test()", forControlEvents: UIControlEvents.ValueChanged) 
    switchStatus.onTintColor = UIColor(red:0.95, green:0.95, blue:0.95, alpha:1.0) 
    switchStatus.thumbTintColor = UIColor(red:0.25, green:0.25, blue:0.25, alpha:1.0) 
    self.view.addSubview(switchStatus); 

    return view 
} 

Und das ist, was es derzeit aussieht like.

Wie kann ich den Schalter neben dem Etikett bearbeiten?

Antwort

1

Sie erhalten den ‚Unbekannter Selektor‘ Fehler, weil Sie fälschlicherweise die test Funktion Targeting sind.

In dieser Zeile

switchStatus.addTarget(self, action: "test()", forControlEvents: UIControlEvents.ValueChanged) 

Sie versuchen, eine Funktion test auf self zu finden, aber test ist eine Funktion innerhalb der viewForHeaderInSection Funktion der Tabellenansicht, keine Funktion auf self.

Darüber hinaus hat sich die Auswahlsyntax von einer Zeichenfolge in die neue #selector-Syntax geändert.

Um dies zu beheben, verschieben Sie die Funktion test als Funktion auf self. Sie müssen auch in der Lage sein, Ihre Objekte switchStatus und LabelStatus zu referenzieren, damit Sie diese auch als Mitglieder Ihres View-Controllers deklarieren können.

So am Ende sollten Sie mit etwas so enden:

class BackTableViewController: UITableViewController { 

    let LabelStatus = UILabel() 
    let switchStatus = UISwitch() 

    func test() { 
     // update the label here 
    } 

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{ 
     // ... 
     switchStatus.addTarget(self, action: #selector(BackTableViewController.test), forControlEvents: UIControlEvents.ValueChanged) 
     // ... 
    } 

} 
0

ändern, dass Codezeile, die Syntax für den Wähler nicht korrekt:

switchStatus.addTarget(self, action: #selector(BackTableViewController.test), forControlEvents: UIControlEvents.ValueChanged) 
+0

Hmm ... got [diese] (http://i.stack.imgur.com/0jP1T.png) Fehler jetzt – Victor

Verwandte Themen