简体   繁体   English

保存UIButton状态的iOS

[英]save UIButton state iOS

I have a UIButton 我有一个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;
}

}

I want to save the user input, weather the button is checked or not, even after the app closes. 我想保存用户输入的内容,即使该应用程序关闭后,该按钮是否被选中也是如此。 Help me with codes anyone? 有人帮我编码吗? I don't know the codes to use NSUserDefaults for saving BOOL state. 我不知道使用NSUserDefaults保存BOOL状态的代码。

Use it by below way: 通过以下方式使用它:

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

To retrieve it, 要检索它,

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

Set images for both Normal and selected state of a button as 将按钮的Normalselected状态的图像设置为

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

and in IBAction set 并在IBAction集中

- (IBAction)checkButton:(id)sender {

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

}

Here is an Example: 这是一个例子:

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

Where I have: 我在哪里:

static NSString *hasLaunchedOnceKey = @"HasLaunchedOnce";

Declared before the @implementation statement. 在@implementation语句之前声明。

See this for an extensive tutorial. 请参阅以获取详尽的教程。

**Note: You do not need to declare anything in any sort of plist files afaik. **注意:您无需在任何类型的plist文件afaik中声明任何内容。 You can simply check for and set these keys and they will be dynamically created if they don't exist. 您只需检查并设置这些键,如果它们不存在,它们将被动态创建。 Works that way for me anyways. 无论如何,对我来说就是这样。

Happy programming! 编程愉快!

My way is too easy .. You don't need to take any other variable. 我的方法太简单了..您不需要采用任何其他变量。 On initialise set your button tag ZERO and after use this. 初始化时,将按钮标签设置为零,然后再使用它。

  - (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];
      }
  }

Thanks & Cheers .. May be helpfull.. 谢谢与欢呼..可能会有所帮助..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM