2016-07-22 13 views
0

Ich habe einen UISwitch zu meinem Navigation Controller hinzugefügt. Dieser Schalter steuert die zugrunde liegende Tabellenansicht und schaltet sie zwischen zwei Datenquellen um. Als ich jedoch versuchte, IBOutlets und Aktionen hinzuzufügen, tauchte der vorgeschlagene Typ als UIBarButtonItem auf, trotzdem, wenn ich ihn als UISwitch speicherte, konnte ich den .on boolean haben. Es scheint jedoch, dass der Schalter nichts tut. Wenn ich darauf klicke, passiert nichts und ich bin mir nicht sicher warum. Mein Code unten.UISwitch in UINavigationBar Funktionalität

@IBAction func PreferencesToggled(sender: UIButton) { 
     if DataToggle.on 
     { 
      let defaults = NSUserDefaults.standardUserDefaults() 
      if let prefs = defaults.objectForKey("teachPref"){ 
       data = prefs as! [newsarticle] 
       self.tableView.reloadData() 
      } 
      else{ 
       data = [newsarticle]() 
       data.append(newsarticle(name: "No Teachers Saved",desc: "http://www.google.com")) 
      } 
      let footer = UIView() 
      self.tableView.tableFooterView = footer 
     } 
     else{ 
      self.tableView.tableFooterView = nil 
      getdata() 
     } 
    } 
+0

Sie haben eine UIBarButtonItem mit initWithCustomView erstellen und die Schalter als Subview der Schaltfläche hinzufügen. Ich denke nicht, dass Sie das nur mit dem Interface Builder tun können. – Bienemann

+0

Wie erstelle ich einen leeren UIBarButton? Oder überlappe ich nur den Schalter über dem bereits vorhandenen? – Praveen

+0

Sorry für so lange, war am Wochenende offline. Ich hoffe, du hast es jetzt herausgefunden, aber wenn nicht, poste ich den Code als Antwort. – Bienemann

Antwort

0

Dies ist, wie ein Schalter programmatisch Ihre navigtion Leiste hinzuzufügen:

let switchView = UISwitch() 
    switchView.addTarget(self, action: #selector(self.PreferencesToggled(_:)), forControlEvents: .ValueChanged) 
    //customize your switch here 
    let barBtn = UIBarButtonItem(customView: switchView) 
    self.navBar?.topItem?.setRightBarButtonItem(barBtn, animated: false)