Ios 按两次按钮时,颜色应如何使用NSUSerDefaults进行更改
我不熟悉XCode。我使用了Ios 按两次按钮时,颜色应如何使用NSUSerDefaults进行更改,ios,objective-c,uibutton,nsuserdefaults,Ios,Objective C,Uibutton,Nsuserdefaults,我不熟悉XCode。我使用了NSUserDefaults,即使它不是我所需要的,也意味着如果我单击该按钮一次,它应该将颜色更改为绿色,如果我再次按下它,它应该将颜色更改为黑色 这是我的密码- - (IBAction)subscribeButtonAction:(id)sender { if (count == 0) { [_subscribeButtonObj setBackgroundColor:[UIColor greenColor]]; greenS
NSUserDefaults
,即使它不是我所需要的,也意味着如果我单击该按钮一次,它应该将颜色更改为绿色,如果我再次按下它,它应该将颜色更改为黑色
这是我的密码-
- (IBAction)subscribeButtonAction:(id)sender {
if (count == 0) {
[_subscribeButtonObj setBackgroundColor:[UIColor greenColor]];
greenStr=[NSString stringWithFormat:@"green"];
NSUserDefaults *greendefults=[NSUserDefaults standardUserDefaults];
[greendefults setValue:greenStr forKey:@"greencolor"];
[greendefults synchronize];
///
count++;
} else if(count == 1){
[_subscribeButtonObj setBackgroundColor:[UIColor blueColor]];
blackStr=[NSString stringWithFormat:@"black"];
NSUserDefaults *blackDefaults=[NSUserDefaults standardUserDefaults];
[blackDefaults setValue:blackStr forKey:@"blackcolor"];
[blackDefaults synchronize];
//count = 0;
}
}
在视图中将出现
中,我编写了如下代码-
-(void)viewWillAppear:(BOOL)animated
{
//count = 0;
if ([[NSUserDefaults standardUserDefaults] stringForKey:@"greencolor"]) {
NSLog(@"change the button to green color %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"greencolor"]);
} else {
NSLog(@"change the button to blackcolor ");
}
}
谁能帮帮我吗。提前感谢实现此功能不需要
NSUserDefaults
。它很容易处理ui按钮的控制状态
uicontrol状态正常
UIControlStateSelected
比如说,
- (IBAction)changeColor:(id)sender {
UIButton *button = (UIButton *)sender;
if (button.selected) { // If selected will change the color into Red
button.backgroundColor = [UIColor redColor];
[button setSelected:NO];
} else {
button.backgroundColor = [UIColor greenColor];
[button setSelected:YES];
}
}
记住,你可以先改变按钮的状态,就像这样
[myButton setSelected:YES];
分配,在您的viewDidLoad
干杯 如果你想用默认的方式。不过,设置控件状态是一种很好的方法。但如果UIControlStateSelected
为YES
,它将为按钮设置不需要的覆盖背景:
- (IBAction)btnAction:(id)sender {
NSUserDefaults *color=[NSUserDefaults standardUserDefaults];
if (count == 0) {
[self.btnOutlet setBackgroundColor:[UIColor greenColor]];
[color setValue:@"green" forKey:@"color"];
}else if(count == 1){
[self.btnOutlet setBackgroundColor:[UIColor blueColor]];
[color setValue:@"blue" forKey:@"color"];
}
count = !count;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
count = 0;
if([[[NSUserDefaults standardUserDefaults] valueForKey:@"color"] isEqualToString:@"green"]){ // been used
[self.btnOutlet setBackgroundColor:[UIColor greenColor]];
}else if([[[NSUserDefaults standardUserDefaults] valueForKey:@"color"] isEqualToString:@"blue"]){
[self.btnOutlet setBackgroundColor:[UIColor blueColor]];
}else{ // first time
[self.btnOutlet setBackgroundColor:[UIColor yellowColor]];
}
}
您甚至没有正确使用NSUserDefault。不是这样的。NO@iworld使用BOOL成员并将其切换到IB中是否配置了按钮操作?如果没有,请先添加它。为什么在这里使用NSUSerDefaults?您只需使用一个BOOL变量即可。