保存标签与NSUserDefaults的

问题描述:

大家好我有保存按钮的标签的问题,当我点击:保存标签与NSUserDefaults的

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

如果有人可能会说我在哪里我的问题,谢谢。

+1

这是什么问题?你发布的代码有什么问题? – rmaddy 2014-10-30 18:54:27

+1

我会问你使用标签。 – Abizern 2014-10-30 18:54:32

+1

我会回应说,我不惜一切代价避免使用标签。他们几乎总是在视图中促进持有状态,这是你不应该做的。 – Fogmeister 2014-10-30 18:57:01

您看起来像在您的addButtonSeconds:内期望的行为不同于您在初始化过程中的行为。

在初始化:

self.editButton.tag == 2; // when "time" is "ON" 
self.editButton.tag == 1; // when "time" is not "ON" 

addButtonSeconds:

self.editButton.tag == 1; // when "time" is "ON" 
self.editButton.tag == 2; // when "time" is not "ON" 

不过,我不知道是你写的逻辑是有道理,还是必须使用的tag财产。考虑继承UIButton,或者直接使用现有的setSelected:isSelectedUIButton

编辑:我会根据您的意见修正您的代码。

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

在初始化:

[_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]]; 
+0

谢谢你的回答我改变了setSelected但我想保存图像的位置,当我点击例如当我去其他控制器后,回去后我的位置的按钮必须保存。 – 2014-10-30 19:40:57

+0

我不知道我明白你在问什么。您的评论问题与您的原始问题完全不同。你的意思是你想保存你的'UIButton'的'frame.origin'吗? – 2014-10-30 19:43:43

+0

是的,例如当我点击按钮图像的按钮是改变,点击后,他与第一个图像改变,我需要保存按钮的图像,当改变与NSUserDefaults。 – 2014-10-30 19:48:22