【问题标题】:Need help figuring out how to save my BOOL inside my button需要帮助弄清楚如何将我的 BOOL 保存在我的按钮中
【发布时间】:2015-07-26 15:59:58
【问题描述】:

我在 UIButton 中放置了一个 BOOL。如果我单击一次按钮,那么我希望始终保存该 BOOL,这样我就不必在游戏中再次单击按钮。我使用了以下代码,但无法保存。但是,代码应该可以工作。主要是最后一行代码使保存不起作用。我做错了什么?

-(void)viewDidLoad{

[[NSUserDefaults standardUserDefaults] setBool:REDguy forKey:@"save"];

if (REDguy==[[NSUserDefaults standardUserDefaults]synchronize]) {
MAN.image=[UIImage imageNamed:@"RED.png"];
}

REDguy=[[NSUserDefaults standardUserDefaults]boolForKey:@"save"];
}

编辑:

if (REDguy==YES) {
    [[NSUserDefaults standardUserDefaults] setBool:REDguy forKey:@"save"]; 
    REDguy =[[NSUserDefaults standardUserDefaults]boolForKey:@"save"];
     MAN.image=[UIImage imageNamed:@"RED.png"];
}

【问题讨论】:

  • 你为什么将REDguy 与调用synchronize 的结果进行比较?这没有任何意义。

标签: ios uiimage boolean


【解决方案1】:

这是一个假设,因为您并没有真正阐明代码中还发生了什么,但看起来您的 bool REDGuy 在 vi​​ewDidLoad 上始终是 NO,并且 if 条件可能总是错误的,因为synchronize 可能总是YES(更不用说,这种比较毫无意义,而且很少需要调用synchronize,因为与用户默认值同步会自行发生)。

确定之前是否按下过按钮的一种简单方法是将以下内容添加到您的按钮操作方法中。

- (void)buttonAction:(id)sender {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"save"];
}

- (void)viewDidLoad {
    BOOL hasSaved = [[NSUserDefaults standardUserDefaults] boolForKey:@"save"];
    if (hasSaved) {
        // You can hide your button here if that's what you're going for
        [yourButton setHidden:YES]
    }
}

这就是你想要完成的事情吗?确定之前是否点击过特定按钮?

【讨论】:

  • 我在上面编辑了我的代码,它可以工作,但它有意义吗?是的,这就是我想要做的,确定一个特定的按钮是否被点击过一次。
  • 不,这没有任何意义。您在 NSUserDefaults 中设置键值“保存”,然后返回相同的值,即您刚刚在上一行代码中设置的值。您需要在按下按钮时设置“保存”键值(在按钮操作方法中)。然后,您的if 条件应检查 NSUserDefaults 中的“保存”值。您可能不需要 REDGuy 属性。您是否尝试过实施我发布的解决方案?
  • 我尝试将 setBool 代码行放在我拥有的官方 REDGuy 按钮中。在 viewDidLoad 中发布 boolForKey 时,我可以选择字符选择。它没有用。相信我,几天来我一直在测试使用 NSUserDefaults 代码的不同方式。直到我在上面发布的 2 之前,试验和错误的组合都没有奏效。我自己觉得这很不寻常,但它确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 2020-09-03
  • 2019-05-30
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多