所以我有兩個灰色UIButton
,button1和button2。當我按下另一個按鈕時,我想將按鈕的顏色改爲紅色,並且改回灰色。當按下不同的按鈕時,如何在按下時更改按鈕的顏色並將其重置爲原始顏色?
我用這個代碼:
UIButton *btn = (UIButton *)sender;
[btn setBackgroundColor:[UIColor redColor]];
但它使兩個按鈕爲紅色。
我該如何做到這一點,如果button1是紅色的,當我按下按鈕2時它會變回灰色?
所以我有兩個灰色UIButton
,button1和button2。當我按下另一個按鈕時,我想將按鈕的顏色改爲紅色,並且改回灰色。當按下不同的按鈕時,如何在按下時更改按鈕的顏色並將其重置爲原始顏色?
我用這個代碼:
UIButton *btn = (UIButton *)sender;
[btn setBackgroundColor:[UIColor redColor]];
但它使兩個按鈕爲紅色。
我該如何做到這一點,如果button1是紅色的,當我按下按鈕2時它會變回灰色?
創建兩個按鈕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]];
}
}
您將要製作兩個單獨的按鈕。通過你的代碼你只能聲明一個按鈕。
在界面中聲明這兩個按鈕,並在ViewDidLoad()方法中初始化它們。
爲每個按鈕設置2個不同的目標,因此當點擊一個按鈕時,可以設置其他按鈕的顏色。
我從中得到的結果是,兩個按鈕都連接到相同的動作/方法,其中包含您提供的代碼。做你指定的最簡單的方法是有兩個不同的動作/方法,並將每個按鈕連接到不同的方法。將button1連接到button1Pressed並將button2連接到button2Pressed。
在.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地說:
//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]];
}
希望這有助於!
有很多方法可以解決這個問題,在你的情況下,我們並不真正知道你是如何實例化你的UIButton
。下面的目的,您使用的可能的解決方案的一個標籤:
首先,你應該在你的頭定義按鈕:
@implementation _4644518ViewController {
UIButton *btn1;
UIButton *btn2;
}
然後,你應該實現它們在你看來,重視他們的挖掘方法:
- (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];
}
}
正如我前面提到的,有很多方法可以執行這樣的算法,但是我喜歡這個算法,因爲我們不知道關於後臺應用程序的許多事情,而且這個算法很容易爲您定製。