2016-07-22 17 views
0

我已經添加了一個UISwitch到我的導航控制器。這個開關控制底層的tableview並在2個數據源之間切換。但是,當我嘗試添加IBOutlets和Actions時,建議的類型是UIBarButtonItem,但是當我將它保存爲UISwitch時,所以我可以使用.on布爾值。但是,似乎交換機沒有做任何事情。當我點擊它什麼都沒有發生,我不知道爲什麼。我的代碼如下。UINwitch在UINavigationBar功能

@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

你必須創建一個initWithCustomView的UIBarButtonItem並添加交換機作爲按鈕的子視圖。儘管如此,我認爲你只能使用界面構建器來做到這一點。 – Bienemann

+0

我如何創建一個空白的UIBarButton?或者我只是將交換機重疊在已有的交換機上? – Praveen

+0

對不起,花了這麼長時間,在週末下線。我希望你現在已經知道了,但如果沒有,我會發布代碼作爲答案。 – Bienemann

回答

0

這是如何以編程方式添加交換機到您的navigtion吧:

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)