Ios 如何更改按钮';按下时为s颜色,按下其他按钮时重置为原始颜色?

Ios 如何更改按钮';按下时为s颜色,按下其他按钮时重置为原始颜色?,ios,uibutton,Ios,Uibutton,所以我有两个灰色按钮,按钮1和按钮2。我想在按下按钮时将其颜色更改为红色,在按下另一个按钮时将其更改为灰色 我使用了以下代码: UIButton *btn = (UIButton *)sender; [btn setBackgroundColor:[UIColor redColor]]; 但它使两个按钮都是红色的 如果按钮1是红色的,当我按下按钮2时,它将变回灰色,我该如何设置它?您将需要制作两个单独的按钮。从代码的外观来看,您只声明了一个按钮 在界面中声明这两个按钮,并在ViewDidLoa

所以我有两个灰色按钮,按钮1和按钮2。我想在按下按钮时将其颜色更改为红色,在按下另一个按钮时将其更改为灰色

我使用了以下代码:

UIButton *btn = (UIButton *)sender;
[btn setBackgroundColor:[UIColor redColor]];
但它使两个按钮都是红色的


如果按钮1是红色的,当我按下按钮2时,它将变回灰色,我该如何设置它?

您将需要制作两个单独的按钮。从代码的外观来看,您只声明了一个按钮

在界面中声明这两个按钮,并在ViewDidLoad()方法中初始化它们


为每个按钮设置2个不同的目标,以便在单击其中一个按钮时,可以设置其他按钮的颜色

我从中得到的是,两个按钮都连接到同一个操作/方法,其中包含您给出的代码。执行指定操作的最简单方法是使用两种不同的操作/方法,并将每个按钮连接到不同的方法。将按钮1连接到按下的按钮1,并将按钮2连接到按下的按钮2

在第h段中,付诸表决:

{
    //connect these buttons up either via interface builder or through code
    IBOutlet UIButton* button1;
    IBOutlet UIButton* button2;
}

- (IBAction)button1Pressed:(id)sender;
- (IBAction)button2Pressed:(id)sender;
在.m.put中:

//connect this method to "touch up inside" on button1
- (IBAction)button1Pressed:(id)sender
{
    //makes button1 red
    [button1 setBackgroundColor:[UIColor redColor]];
}

//connect this method to "touch up inside" on button2
- (IBAction)button2Pressed:(id)sender
{
    //changes button1 back to gray
    [button1 setBackgroundColor:[UIColor grayColor]];
}

希望这有帮助

有很多方法可以解决这个问题,在您的情况下,我们不知道您是如何实例化您的
ui按钮的。以下目的是使用tag提供一种可能的解决方案:

首先,您应该在标题中定义按钮:

@implementation _4644518ViewController {
    UIButton *btn1;
    UIButton *btn2;
}
然后,您应该在视图中实现它们,并将tapped方法附加到它们:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    btn1 = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, 100, 30)];
    [btn1 setTag:101];
    [btn1 setTitle:@"btn1" forState:UIControlStateNormal];
    btn1.backgroundColor = [UIColor lightGrayColor];
    [btn1 addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn1];

    btn2 = [[UIButton alloc] initWithFrame:CGRectMake(5, 40, 100, 30)];
    [btn2 setTag:102];
    [btn2 setTitle:@"btn2" forState:UIControlStateNormal];
    btn2.backgroundColor = [UIColor lightGrayColor];
    [btn2 addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn2];
}
最后要做的事情是实现
btntaped
方法:

- (void)btnTapped:(id)sender
{
    if ([sender tag] == 101) {
        btn1.backgroundColor = [UIColor redColor];
        btn2.backgroundColor = [UIColor lightGrayColor];
    } else if([sender tag] == 102) {
        btn1.backgroundColor = [UIColor lightGrayColor];
        btn2.backgroundColor = [UIColor redColor];
    }
}

正如我前面提到的,有很多方法可以执行这种算法,但我喜欢这一种,因为我们对您的后台应用程序了解不多,这一种很容易为您定制。

创建两个按钮btn1和btn2

@property (weak, nonatomic) IBOutlet UIButton *btn1;
@property (weak, nonatomic) IBOutlet UIButton *btn2;
- (IBAction)btnClick:(id)sender;
btn1和btn2都应连接到
btn单击
。下面的代码将完成您的其余工作

- (IBAction)btnClick:(id)sender {

    if (self.btn1 == sender) {

        [self.btn1 setBackgroundColor:[UIColor redColor]];
        [self.btn2 setBackgroundColor:[UIColor grayColor]];

    }else{

        [self.btn1 setBackgroundColor:[UIColor grayColor]];
        [self.btn2 setBackgroundColor:[UIColor redColor]];

    }

}