2014-10-30 88 views
1

大家好我有保存按鈕的標籤的問題,當我點擊:保存標籤與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

回答

2

您看起來像在您的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