所以我有两个灰色UIButton
,button1和button2。当我按下按钮时,我想改变按钮的颜色,当我按下另一个按钮时,我想改回按钮的颜色。
我使用了这段代码:
UIButton *btn = (UIButton *)sender;
[btn setBackgroundColor:[UIColor redColor]];
但它会使两个按钮变红。
如何制作,以便如果button1为红色,当我按下按钮2时它会变回灰色?
答案 0 :(得分:0)
您将要制作两个单独的按钮。通过代码的外观,您只声明了一个按钮。
在界面中声明两个按钮,在ViewDidLoad()方法中初始化它们。
为每个按钮设置2个不同的目标,这样当单击一个按钮时,您可以设置其他按钮的颜色。
答案 1 :(得分:0)
我从中得到的是两个按钮都连接到相同的动作/方法,其中包含您提供的代码。执行指定操作的最简单方法是使用两个不同的操作/方法,并将每个按钮连接到不同的方法。将button1连接到button1按下并将button2连接到button2按下。
在.h put:
{
//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]];
}
希望这有帮助!
答案 2 :(得分:0)
有很多方法可以解决这个问题,在你的情况下,我们真的不知道你是如何实例化UIButton
的。以下是使用标记的可能解决方案之一:
首先,您应该在标题中定义按钮:
@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];
}
最后要做的是实施btnTapped
方法:
- (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];
}
}
正如我之前提到的,有很多方法可以执行这样的算法,但我喜欢这个,因为我们不了解你的后台应用程序很多东西,而且这个很容易为你定制。
答案 3 :(得分:0)
创建两个按钮btn1& btn2。
@property (weak, nonatomic) IBOutlet UIButton *btn1;
@property (weak, nonatomic) IBOutlet UIButton *btn2;
- (IBAction)btnClick:(id)sender;
btn1& btn2应该连接到btnClick
。下面的代码将完成您的其余工作
- (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]];
}
}