【问题标题】:Save Favorite Button State保存收藏按钮状态
【发布时间】:2017-04-14 22:58:46
【问题描述】:

我正在尝试通过保存状态来完成我最喜欢的按钮,即使我退出视图 \App 也是如此。如果有人能告诉我如何做到这一点,那就太好了,我正在使用 Xcode 8 并使用 Swift 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)
                
                
            }
        }
        

正如我所说,如果有人能帮我保存按钮的状态,那就太好了 即使我退出视图或应用程序,我也会非常感激,提前谢谢!

【问题讨论】:

    标签: ios swift button nsuserdefaults state


    【解决方案1】:

    将值保存到 UserDefaults 会将其写入 plist 文件。当应用程序恢复时,它不会读回值或恢复状态。你对此负责。所以在 viewDidLoad 某处检查状态:

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

    然后相应地设置您的按钮

    【讨论】:

    • 相应地设置按钮是什么意思?你能帮我完成这个过程吗?
    • Favoritebutton.isSelected = state .或者当 isSaved 为真时应该发生的任何其他事情
    • 我真的不知道如何设置它....你介意写一个 sn-p 来解释它是如何完成的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多