2017-04-14 68 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

我真的不知道如何設置....你介意寫一段代碼解釋它如何完成? –