【问题标题】:save UIButton state iOS保存 UIButton 状态 iOS
【发布时间】:2014-06-19 05:00:58
【问题描述】:

我有一个 UIButton

- (IBAction)checkButton:(id)sender {

if (!checked) {
    [checkBoxButton setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
    checked = YES;
} else if (checked) {
    [checkBoxButton setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
    checked = NO;
}

}

我想保存用户输入,无论是否选中按钮,即使在应用程序关闭后也是如此。有人帮我写代码吗?我不知道使用 NSUserDefaults 保存 BOOL 状态的代码。

【问题讨论】:

  • 使用选定的属性
  • 你想在表格视图中保持状态
  • 是的!应用在表格视图中关闭后 UIButton 的状态。
  • 那么您最好更新您的 tableview 的数据源以保留状态并将其保存到磁盘或 NSUserDefaults 使用 NSKeyedArchiver: benreimers.net.au/blog/…

标签: ios nsuserdefaults


【解决方案1】:

按以下方式使用:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool: checked forKey:@"Status"];
[defaults synchronize];

要检索它,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL state = [defaults boolForKey:@"Status"];

【讨论】:

  • 第一部分将帮助您保存状态(即在您的情况下检查变量)即使应用程序关闭。第二部分将帮助检索存储的变量。您应该使用它来设置按钮的初始状态。
【解决方案2】:

将按钮的Normalselected 状态的图像设置为

[checkBoxButton setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateSelected];
[checkBoxButton setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];

并在IBAction 中设置

- (IBAction)checkButton:(id)sender {

    if (!checked) {
        [checkBoxButton setSelected:NO];
        checked = YES;
    } else if (checked) {
        [checkBoxButton setSelected:YES];
        checked = NO;
    }

}

【讨论】:

    【解决方案3】:

    这是一个例子:

    if ([[NSUserDefaults standardUserDefaults] boolForKey:hasLaunchedOnceKey])
    {
        [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:hasLaunchedOnceKey];
        [[NSUserDefaults standardUserDefaults] synchronize]; //Saves the data
    }
    

    我在哪里:

    static NSString *hasLaunchedOnceKey = @"HasLaunchedOnce";
    

    在@implementation 语句之前声明。

    请参阅 this 了解详细教程。

    **注意:您不需要在任何类型的 plist 文件中声明任何内容 afaik。您可以简单地检查并设置这些键,如果它们不存在,它们将被动态创建。反正对我来说就是这样。

    编程愉快!

    【讨论】:

      【解决方案4】:

      我的方法太简单了..你不需要采取任何其他变量。在初始化时设置你的按钮标签零,然后使用它。

        - (IBAction)checkButton : (id)sender {
      
            if ([sender tag] == 0) {
              [sender setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
              [sender setTag:1];
            } else   {
               [sender setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
              [sender setTag:0];
            }
        }
      

      谢谢和干杯..可能会有所帮助..

      【讨论】:

      • 你检查过我的答案吗.. :)
      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      相关资源
      最近更新 更多