单击ios中的保存按钮时如何保存复选框值

时间:2014-11-03 05:50:36

标签: ios

我有一个通过按钮设计的复选框,我可以更改复选框图像,但是当我点击“保存”按钮时,我无法保存复选框中选中的最后一个图像。

我有一个页面,其中有一个复选框,保存按钮操作也在那里,当我点击保存复选框中的值必须保存,当我再次在该屏幕重新输入以前的任何值必须看到复选框,但每当我进入此屏幕时,复选框都显示为空。

希望有人帮助我。

BOOL checked;  

- (IBAction)canFollowAction:(id)sender
{
UIButton *tappedButton = (UIButton*)sender;
if([tappedButton.currentImage isEqual:[UIImage imageNamed:@"checkBox.png"]])
{
    [sender  setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
}
else
{
    [sender setImage:[UIImage imageNamed:@"checkBox.png"]forState:UIControlStateNormal];
}
}


- (IBAction)btnSaveAction:(id)sender
{
if(checked)
{
    [btnCheckCanFollow setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
}
else
{
    [btnCheckCanFollow setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
}
[self.navigationController popViewControllerAnimated:YES];

[[[iToast makeText:@"Successfully Updated"]setGravity:iToastGravityBottom]show];
}

4 个答案:

答案 0 :(得分:1)

@kool kims - 您使用的术语保存值。有很多方法可以保留应用程序的持久数据。

  1. 使用NSUserDefaults在应用程序级别保存值。
  2. 使用.plist文件
  3. CoreData
  4. SQlite的
  5. 文件目录
  6. 根据您的应用程序架构,您可以从上面选择,这对您的应用程序更具相关性和效率。

    编辑:

    如果没有多个复选框,最简单的方法就是使用NSUserDefaults

    单击“保存”按钮

    时保存检查值
    - (IBAction)btnSaveAction:(id)sender
    {
    
        NSNumber *checkValue = [NSNumber numberWithBool:checked];
        NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
        [standardDefaults setObject:checked forKey:@"kCheckBoxValue"];
        [standardDefaults synchronize];
    
        if(checked)
        {
            [btnCheckCanFollow setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
        }
        else
        {
            [btnCheckCanFollow setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
        }
        [self.navigationController popViewControllerAnimated:YES];
    
        [[[iToast makeText:@"Successfully Updated"]setGravity:iToastGravityBottom]show];
    }
    

    每当您打开ViewController时,您都会从NSUserDefaults-viewDidLoad获取-viewWillAppear之前的值。

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
        if ([standardDefaults objectForKey:@"kCheckBoxValue"]) {
            NSNumber *checkValue = [standardDefaults objectForKey:@"kCheckBoxValue"];
            checked = [checkValue boolValue];
        } else {
            checked = NO;
        }
    }
    

答案 1 :(得分:0)

您必须在NSUSERDEFAULTS中保存状态!

例如ON按钮单击

if (button.selected)
{
    [button setSelected:YES];
    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"REMEMBER_ME"];
}

并检查ViewDidLoad

if([[NSUserDefaults standardUserDefaults] boolForKey:@"REMEMBER_ME"] == YES)
{
   [button setSelected:YES];
   [button setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
}
else
{
  [button setSelected:NO];
  [button setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
}

答案 2 :(得分:0)

使用全局变量来存储复选框的状态,或者在NSUserdefaults中,您可以保存按钮的状态。 &安培;在控制器的viewdidload方法上判断这个状态。

答案 3 :(得分:0)

根据我的理解让我们举个例子

@property (weak, nonatomic) IBOutlet UIButton *yourButton;

及其实施行动

- (IBAction)yourMethodName:(UIButton *)sender {

      int tag=_yourButton.tag; //if you have tagged your UI button save it to know which button has changed its state.

    if(sender.isSelected){ //Checking state of the button whether selected or not.

        UIImage *buttonImage=sender.currentImage;//save this image if your selected images randomly.
        NSString *buttonText=sender.currentTitle;//gets you current text in button.

    }else{
        //selected state is NO
        //checkBox is Off.
    }
}

在这里,我已经展示了如何获得您只需存储状态所需的不同值,因为我相信您使用一个按钮/复选框,并且可以根据该状态填充图像。

但是,如果您有多个复选框或UI按钮,则可能需要使用

标记每个UIButton
[_yourButton setTag:1];

并使用sender.tag

将标记值存储在操作方法中

修改 刚刚完成了你的代码 永远不会设置或存储BOOL checked;值。 如果条件失败,每次都这样。

此外,如果您有多个UIButton,您可能希望存储UIButton的已检查状态和标记,如前所述;