2014-07-09 44 views
0

所以我有兩個灰色UIButton,button1和button2。當我按下另一個按鈕時,我想將按鈕的顏色改爲紅色,並且改回灰色。當按下不同的按鈕時,如何在按下時更改按鈕的顏色並將其重置爲原始顏色?

我用這個代碼:

UIButton *btn = (UIButton *)sender; 
[btn setBackgroundColor:[UIColor redColor]]; 

但它使兩個按鈕爲紅色。

我該如何做到這一點,如果button1是紅色的,當我按下按鈕2時它會變回灰色?

回答

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]]; 

    } 

} 
0

您將要製作兩個單獨的按鈕。通過你的代碼你只能聲明一個按鈕。

在界面中聲明這兩個按鈕,並在ViewDidLoad()方法中初始化它們。

爲每個按鈕設置2個不同的目標,因此當點擊一個按鈕時,可以設置其他按鈕的顏色。

0

我從中得到的結果是,兩個按鈕都連接到相同的動作/方法,其中包含您提供的代碼。做你指定的最簡單的方法是有兩個不同的動作/方法,並將每個按鈕連接到不同的方法。將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]]; 
} 

希望這有助於!

0

有很多方法可以解決這個問題,在你的情況下,我們並不真正知道你是如何實例化你的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]; 
    } 
} 

正如我前面提到的,有很多方法可以執行這樣的算法,但是我喜歡這個算法,因爲我們不知道關於後臺應用程序的許多事情,而且這個算法很容易爲您定製。

相關問題