2017-04-14 5 views
1

私はお気に入りのボタンをview \ Appを終了しても保存しています。私が言ったようにそれは素晴らしいだろう、 好きなボタンの状態を保存する

//create a new button 
     let Favoritebutton: UIButton = UIButton(type: UIButtonType.custom) 
     //set image for button 
     Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), for: .normal) 
     Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), for: .selected) 
     //add function for button 
     Favoritebutton.addTarget(self, action: #selector(self.button), for: .touchUpInside) 
     //set frame 
     Favoritebutton.frame = CGRect(x:0,y: 0,width: 35,height: 35) 

     let barButton = UIBarButtonItem(customView: Favoritebutton) 
     //assign button to navigationbar 

     self.navigationItem.rightBarButtonItem = barButton 

     let state = UserDefaults.standard.bool(forKey: "isSaved") ?? false 

     } 


    @IBAction func button(sender: UIButton) { 

     sender.isSelected = !sender.isSelected 

     UserDefaults.standard.set(true,forKey: "isSaved") 
     UserDefaults.standard.synchronize() 



     if let Favoritebutton = sender as? UIButton { 
      if Favoritebutton.isSelected { 
       // set selected 
       Favoritebutton.isSelected = true 
       UserDefaults.standard.set(true, forKey: "MY_FAV_KEY") 
       UserDefaults.standard.synchronize() 



        // set badge to tabbar item. 
     let tabItem = self.tabBarController?.tabBar.items![3] 
     sel_val = tabItem?.badgeValue 
     if(sel_val == nil){ 
      sel_val = "0" 
     } 
     let sel_num = Int(sel_val!) 
     tabItem!.badgeValue = String(format: "%d", sel_num! + 1) as String 

     let Fav: NSMutableArray = [] 
     Fav.add(barImage) 
     Fav.add(barName) 
     Fav.add(streetName) 
     favorite.add(Fav) 




      } else { 
       // set deselected 
       Favoritebutton.isSelected = false 
       UserDefaults.standard.set(true, forKey: "MY_FAV_KEY") 
       UserDefaults.standard.synchronize() 


       let tabItem = self.tabBarController?.tabBar.items![3] 
       sel_val = tabItem?.badgeValue 
       if(sel_val == nil){ 
        sel_val = "0" 
       } 
       let sel_num = Int(sel_val!) 
       tabItem!.badgeValue = String(format: "%d", sel_num! - 1) as String 
       let Fav: NSMutableArray = [] 
       Fav.add(barImage) 
       Fav.add(barName) 
       Fav.add(streetName) 
       favorite.remove(Fav) 


      } 
     } 

:誰もが私はこれをどのように行うことができます私を見ることができれば、私はXcodeの8を使用し、スウィフト3

と現在のボタンのコードをコーディングしています素晴らしいものです誰かが私がボタンの状態を保存するのを助けることができるならば、私はビューやアプリケーションを終了しても、私は本当に感謝します、ありがとうございました!

答えて

1

UserDefaultsに値を保存すると、plistファイルに値が書き込まれます。アプリの再開時に値を読み込んだり復元したりすることはありません。あなたはその責任を負っています。だから、どこかのviewDidLoadで状態を確認してください。

let state = UserDefaults.standard.bool(forKey: "isSaved") ?? false 

その後、あなたは正確に応じて設定し、ボタンとはどういう意味ですか

+0

それに応じてボタンを設定しますか?あなたはそのプロセスで私を助けてくれますか? –

+0

Favoritebutton.isSelected = state。 isSavedがtrueのときに起こるべきその他のこと –

+0

これを設定する方法は本当にわかりません...どうすればそれを行うことができるか説明するスニペットを書いてもいいですか? –

関連する問題