当用户按下按钮时,图像更改为on。当用户离开时,我需要它记住,在下次他们进入这个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")
}发布于 2015-12-08 03:06:16
在下面尝试我的解决方案。每次单击该按钮时,它都会更改状态。如果您离开视图控制器,它将保存状态。如果这对你有帮助,请告诉我。
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")
}
}发布于 2015-12-08 03:18:05
您可以简单地将类似的内容存储在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然后,您可以简单地获取和设置app委托中的布尔值。
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()
}https://stackoverflow.com/questions/34146723
复制相似问题