2016-07-22 6 views
0

ナビゲーションコントローラにUISwitchを追加しました。このスイッチは、基になるテーブルビューを制御し、2つのデータソース間で切り替えます。しかし、私はIBOutletsとアクションを追加しようとしたときに、提案された型がUIBarButtonItemとして登場しましたが、UISwitchとして保存したときには.onブール値を持つことができました。しかし、スイッチは何もしていないようです。私はそれをクリックすると何も起きていないし、なぜ私は確信していない。下の私のコード。UINavigationBar機能のUISwitch

@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)