保存按钮图像的状态 swift
Saving a button image's state swift
当用户按下按钮时,图像会变为打开状态。当用户离开 View Controller 时,我需要它记住按钮已设置为图像,下次他们转到此 VC。我试过 NSUser 默认值无济于事。有人可以帮忙吗?
在按钮操作中:
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")
在视图中加载:
// save switch state:
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("SwitchState") != nil) {
buttonPressed = defaults.boolForKey("SwitchState")
}
试试下面我的解决方案。每次单击按钮时,它都会更改状态的开和关。如果你离开视图控制器,它会保存状态。让我知道这是否对您有帮助。
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")
}
}
您可以简单地在 AppDelegate
中存储类似这样的内容
@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
来获取您的应用委托
var appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
然后,您可以简单地在应用委托中获取和设置布尔值
func getSwitchState() -> Bool{
return appDelegate.myButtonSwitchState
}
func setSwitchState(value: Bool){
appDelegate.myButtonSwitchState = value
}
如果您想在用户退出应用程序(将其从 运行 应用程序中删除)后存储此状态,您可以使用 NSUserDefaults
并简单地使用它
func getSwitchState() -> Bool{
return NSUserDefaults.standardUserDefaults().boolForKey("buttonStatus")
}
func setSwitchState(value: Bool){
NSUserDefaults.standardUserDefaults().setObject(value, forKey: "buttonStatus")
NSUserDefaults.standardUserDefaults().synchronize()
}
当用户按下按钮时,图像会变为打开状态。当用户离开 View Controller 时,我需要它记住按钮已设置为图像,下次他们转到此 VC。我试过 NSUser 默认值无济于事。有人可以帮忙吗?
在按钮操作中:
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")
在视图中加载:
// save switch state:
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("SwitchState") != nil) {
buttonPressed = defaults.boolForKey("SwitchState")
}
试试下面我的解决方案。每次单击按钮时,它都会更改状态的开和关。如果你离开视图控制器,它会保存状态。让我知道这是否对您有帮助。
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")
}
}
您可以简单地在 AppDelegate
@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
var appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
然后,您可以简单地在应用委托中获取和设置布尔值
func getSwitchState() -> Bool{
return appDelegate.myButtonSwitchState
}
func setSwitchState(value: Bool){
appDelegate.myButtonSwitchState = value
}
如果您想在用户退出应用程序(将其从 运行 应用程序中删除)后存储此状态,您可以使用 NSUserDefaults
并简单地使用它
func getSwitchState() -> Bool{
return NSUserDefaults.standardUserDefaults().boolForKey("buttonStatus")
}
func setSwitchState(value: Bool){
NSUserDefaults.standardUserDefaults().setObject(value, forKey: "buttonStatus")
NSUserDefaults.standardUserDefaults().synchronize()
}