Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按两次按钮时,颜色应如何使用NSUSerDefaults进行更改_Ios_Objective C_Uibutton_Nsuserdefaults - Fatal编程技术网

Ios 按两次按钮时,颜色应如何使用NSUSerDefaults进行更改

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

我不熟悉XCode。我使用了
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变量即可。