2017-04-14 69 views
1

我试图通过保存状态来完成我最喜欢的按钮,即使当我退出视图\应用程序。这将是巨大的,如果有人能告诉我,我怎么能做到这一点,我使用的Xcode 8与斯威夫特编码3.保存喜欢的按钮状态

当前按钮代码:

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


      } 
     } 

正如我所说的,这将是巨大的如果任何人都可以帮我保存按钮的状态 ,即使我退出视图或应用程序,我会非常感激,预先感谢您!

回答

1

将值保存到UserDefaults将其写入到plist文件中。它不会在应用程序恢复时读取值或恢复状态。你对此负责。因此,在viewDidLoad中某处签到状态:

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

然后据此

+0

设置你的按钮你什么恰恰意味着通过设置相应的按钮?你能帮助我完成这个过程吗? –

+0

Favoritebutton.isSelected =状态。或者当isSaved为真时发生的任何其他事情 –

+0

我真的不知道如何设置....你介意写一段代码解释它如何完成? –