首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速保存按钮图像的状态

快速保存按钮图像的状态
EN

Stack Overflow用户
提问于 2015-12-08 02:01:02
回答 2查看 942关注 0票数 0

当用户按下按钮时,图像更改为on。当用户离开时,我需要它记住,在下次他们进入这个VC时,按钮被设置为图像。我尝试了NSUser默认设置,但没有效果。有人能帮忙吗?

在按钮动作中:

代码语言:javascript
复制
  buttonPressed = !buttonPressed

    let defaults = NSUserDefaults.standardUserDefaults()


    if buttonPressed == true {

        let followedObjectId = userToShowDetail?["name"] as? String

        isFollowing[followedObjectId!] = true

        sender.setImage(UIImage(named: "fave_on@2x.png"), forState: UIControlState.Normal)
        print("follow")

        let following = PFObject(className: "Followers")
        following["following"] = userToShowDetail?["name"] as? String
        following["follower"] = PFUser.currentUser()?.objectId
        favLabel.text = "Favourite Jammer"

        following.saveInBackground()
        defaults.setBool(true, forKey: "SwitchState")

    } else {

        if buttonPressed != true {
            let followedObjectId = userToShowDetail?["name"] as? String

            isFollowing[followedObjectId!] = false
            print("notFollow")
            sender.setImage(UIImage(named: "fave_off@2x.png"), forState: UIControlState.Normal)

            favLabel.text = "Add to favourites?"

            defaults.setBool(false, forKey: "SwitchState")

在视图中加载了:

代码语言:javascript
复制
  // save switch state:
    let defaults = NSUserDefaults.standardUserDefaults()
    if (defaults.objectForKey("SwitchState") != nil) {
        buttonPressed = defaults.boolForKey("SwitchState")
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 03:06:16

在下面尝试我的解决方案。每次单击该按钮时,它都会更改状态。如果您离开视图控制器,它将保存状态。如果这对你有帮助,请告诉我。

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController{

    // MARK: Properties

    @IBOutlet weak var imgTest: UIImageView!

    let defaults = NSUserDefaults.standardUserDefaults()
    var setImageStatus: String = "off" {
        willSet {
            if newValue == "on" {
                imgTest.image = UIImage(named: "imgOn.png")
            } else {
                imgTest.image = UIImage(named: "imgOff.png")
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        if let imgStatus = defaults.stringForKey("imgStatus")
        {
            setImageStatus = imgStatus
        } else {
            setImageStatus = "off"
        }

    }

    @IBAction func btnSave(sender: UIButton) {

        let stat = setImageStatus == "on" ? "off" : "on"
        setImageStatus = stat
        defaults.setObject(stat, forKey: "imgStatus")

    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-12-08 03:18:05

您可以简单地将类似的内容存储在AppDelegate中。

代码语言:javascript
复制
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate{

    var myButtonSwitchState: Bool = false


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        //your code...
    }    

    //the rest of your code...

}

然后,在视图控制器中,可以通过将UIApplication.sharedApplication().delegate转换为AppDelegate来获得应用程序委托。

代码语言:javascript
复制
var appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

然后,您可以简单地获取和设置app委托中的布尔值。

代码语言:javascript
复制
func getSwitchState() -> Bool{
    return appDelegate.myButtonSwitchState
}

func setSwitchState(value: Bool){
    appDelegate.myButtonSwitchState = value
}

如果您想在用户退出应用程序(将其从运行的应用程序中删除)之后存储此状态,则可以使用NSUserDefaults,而只需使用此方法即可。

代码语言:javascript
复制
func getSwitchState() -> Bool{
    return NSUserDefaults.standardUserDefaults().boolForKey("buttonStatus")
}

func setSwitchState(value: Bool){
    NSUserDefaults.standardUserDefaults().setObject(value, forKey: "buttonStatus")
    NSUserDefaults.standardUserDefaults().synchronize()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34146723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档