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进行更改时,我需要保存按钮的图像。