退出应用程序并重新加载时保存 UIButton 的状态

Posted

技术标签:

【中文标题】退出应用程序并重新加载时保存 UIButton 的状态【英文标题】:saving state of UIButton when exiting App and reloading it 【发布时间】:2012-05-07 23:56:51 【问题描述】:

我在视图上有一个自定义 UIButton,当我按下它时,它会改变状态和 img。当我退出视图并返回它时,UIButton 的状态保持不变。但是当我退出我的应用程序并重新启动它时。我的自定义 UIButton 的状态恢复为默认值。当我退出应用程序时,有没有办法可以保存该按钮的状态?

下面是示例图片

before http://i.minus.com/ibzHa1XCTDwSAJ.png

![之后]http://min.us/mtkB3JQRI

这是我尝试在 -(void)viewDidLoad 上执行此操作的代码

UOEventPost *post = (UOEventPost *)self.event;
if(post.postWanted == YES)
    [wantThis setBackgroundImage:[UIImage imageNamed:@"wanted@2x.png"] forState:UIControlStateSelected];
    [wantThis setSelected:TRUE];
    wantThis.titleLabel.text = [NSString stringWithFormat:@"Wanted"];
else 
    [wantThis setSelected:FALSE];

编辑

  savedState = [[NSUserDefaults standardUserDefaults]boolForKey:@"TheSavedState"];

UOEventPost *post = (UOEventPost *)self.event;
if(post.postWanted == YES)
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"TheSavedState"];
else 
    [[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"TheSavedState"];


if(!savedState)
    [wantThis setSelected:FALSE];
else 
    [wantThis setBackgroundImage:[UIImage imageNamed:@"wanted@2x.png"] forState:UIControlStateSelected];
    [wantThis setSelected:TRUE];
    wantThis.titleLabel.text = [NSString stringWithFormat:@"Wanted"];

【问题讨论】:

你试过NSUserDefaults吗? 是的,我有,检查我新编辑的代码 保存到 NSUserDefaults 后执行以下操作:[[NSUserDefaults standardUserDefaults] synchonize]。这将保存它。 同步使我的应用崩溃 【参考方案1】:

使用 nsuserdefaults,因此只要用户拥有您的应用程序,它就会保存。并且您可以在需要时覆盖它。

【讨论】:

【参考方案2】:

只需将状态写入文件即可。从中读取,onLoad。问题解决了。如果您需要帮助,请查看在 ios 中读写文件。或者您也可以使用设置。即使用户完全退出应用程序,它也会保持状态。

【讨论】:

【参考方案3】:

在我看来,您可以将selected 状态存储为BOOL,然后稍后再读取。查看NSUserDefaults 以在会话中保留此类信息。 (对您的特定应用执行此操作的最佳方法可能是存储一个 NSArray,其中包含用户想要参与的每个事件的标识符。)

【讨论】:

我尝试过使用 NSUserDefaults,但之前没有用,请检查我编辑的代码

以上是关于退出应用程序并重新加载时保存 UIButton 的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序中保存和加载 UIButton 的 alpha 值? [复制]

应用程序进入/离开后台时保存和加载数据

退出并加载我的应用程序时,如何将图像保存并读取到临时文件夹

用户退出应用程序时如何保存 Android CheckBox 的状态?

MagicalRecord 保存在应用程序第一次退出并重新运行之前不会持续存在

关于退出应用程序的问题(保存数据和加载数据)