Ios 使用NSUserDefault保存按钮的标记

Ios 使用NSUserDefault保存按钮的标记,ios,uibutton,nsuserdefaults,Ios,Uibutton,Nsuserdefaults,大家好,当我单击时,我对按钮的保存标记有问题: - (IBAction)addButtonSeconds:(id)sender { if ([sender tag] == 1) { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; [standardUserDefaults setObject:@"Off" forKey:@"time"]; [_editButto

大家好,当我单击时,我对按钮的保存标记有问题:

- (IBAction)addButtonSeconds:(id)sender {


if ([sender tag] == 1) {
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    [standardUserDefaults setObject:@"Off" forKey:@"time"];
    [_editButton setImage:[UIImage imageNamed:@"ВЫКЛ.png"] forState:UIControlStateNormal];
    [_plus setEnabled:YES];
    [_minus setEnabled:YES];
    [_editButton setTag:2];
} else if ([sender tag] == 2){
    [_editButton setImage:[UIImage imageNamed:@"ВКЛ.png"] forState:UIControlStateNormal];
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    [standardUserDefaults setObject:@"ON" forKey:@"time"];
    [_plus setEnabled:NO];
    [_minus setEnabled:NO];
    [_editButton setTag:1];
}
这是初始化方法

 if ([[standartDefaults stringForKey:@"time"]isEqualToString:@"ON"]) {
    self.editButton.tag = 2;
}else{
     self.editButton.tag = 1;
}

如果有人能告诉我我的问题出在哪里。谢谢。

看起来您希望在
addButtonSeconds:
中的行为与初始化中的行为有所不同

初始化时:

self.editButton.tag == 2; // when "time" is "ON"
self.editButton.tag == 1; // when "time" is not "ON"
[_editButton setImage:[UIImage imageNamed:@"ВЫКЛ.png"] forState:UIControlStateNormal];
[_editButton setImage:[UIImage imageNamed:@"ВКЛ.png"] forState:UIControlStateSelected];
[_editButton setImage:[UIImage imageNamed:@"ВКЛ.png"] forState:UIControlStateSelected|UIControlStateHighlighted];
[_editButton setSelected:[[standartDefaults stringForKey:@"editSelected"] boolValue]];
添加按钮秒:

self.editButton.tag == 1; // when "time" is "ON"
self.editButton.tag == 2; // when "time" is not "ON"
不过,我不确定您编写的内容在逻辑上是否有意义,或者是否需要使用
标记
属性。考虑子类<代码> UIButton <代码>。或者只需使用
ui按钮的现有
setSelected:
isSelected

编辑:我将根据您的评论为您修复代码

- (IBAction)addButtonSeconds:(id)sender {
  [_editButton setSelected:![_editButton isSelected]];
  [_plus setEnabled:![_editButton isSelected]];
  [_minus setEnabled:![_editButton isSelected]];
  NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
  [standardUserDefaults setObject:@([_editButton isSelected]) forKey:@"editSelected"];
}
在初始化过程中:

self.editButton.tag == 2; // when "time" is "ON"
self.editButton.tag == 1; // when "time" is not "ON"
[_editButton setImage:[UIImage imageNamed:@"ВЫКЛ.png"] forState:UIControlStateNormal];
[_editButton setImage:[UIImage imageNamed:@"ВКЛ.png"] forState:UIControlStateSelected];
[_editButton setImage:[UIImage imageNamed:@"ВКЛ.png"] forState:UIControlStateSelected|UIControlStateHighlighted];
[_editButton setSelected:[[standartDefaults stringForKey:@"editSelected"] boolValue]];

有什么问题吗?你发布的代码有什么问题吗?我会质疑你对标签的使用。我会回应说,我不惜一切代价避免使用标签。他们几乎总是在视图中提升保持状态,这是您不应该真正执行的操作。我的问题是,当我单击按钮时,我转到其他控制器,在返回此控制器后,按钮必须保存在这些位置,例如,在标记2的位置。感谢您的回答,我是用setSelected更改的但我想在单击时保存图像的位置,例如,当我转到其他控制器时,返回后,必须保存按钮的位置。我不确定我是否理解您的要求。您的评论问题与原始问题完全不同。您的意思是要保存
UIButton的
框。原点
?是的,例如,当我单击按钮时,按钮的图像是更改的,在单击之后,他将使用第一个图像进行更改,当使用NSUserDefaults进行更改时,我需要保存按钮的图像。