2016-12-29 149 views
0

我有我的故事板和ViewController 3個按鈕,按預期工作:更改按鈕不同的按鈕,按鈕上的文字點擊

- (IBAction)button0:(id)sender { 
    [sender setTitle:@"btn0 pressed" forState:UIControlStateNormal]; 
} 
- (IBAction)button1:(id)sender { 
    [sender setTitle:@"btn1 pressed" forState:UIControlStateNormal]; 
} 
- (IBAction)button2:(id)sender { 
    [sender setTitle:@"btn2 pressed" forState:UIControlStateNormal]; 
} 

我有第四個按鍵在按下時,我想改變將button0-2的文本顯示爲空字符串。

- (IBAction)resetAllButtons:(id)sender { 
    //In Android this code would be something like: 
    //Button btn0 = (Button) findViewById(R.id.button0); 
    //btn0.setText(" "); 
} 

我該怎麼做?我找到了許多方法來改變按鈕文本,但只有當前按鈕被按下。我能以某種方式通過id來定位所有的按鈕嗎?

回答

0

想通了(雖然仍然爲什麼它的工作原理不清楚?)

我在ViewController.h文件連接BUTTON0作爲一個IBOutlet。

@property (weak, nonatomic) IBOutlet UIButton *button0; 

從那裏,我能夠引用它使用

[self.button0 setTitle:@" " forState:UIControlStateNormal]; 

我ViewController.m文件,但爲什麼我能做到這一點?我想,如果我宣佈

- (IBAction)button0:(id)sender; 
我ViewControler.h文件

,我不能也有一個插座連接到同一個對象?感謝您閱讀任何方式。

+0

很高興你知道了:) 當你聲明'(IBAction)button0:(id)sender'時,你並不是說你有一個叫做_button0_的**按鈕**,你只是在說一些_「Hey Xcode,這裏有一些我想在用戶做某事時觸發的函數「_(你可能已經注意到在IB中你可以將這個動作分配給不同的事件,比如touchUpInside,touchUpOutside等) 只有這個語句,Xcode沒有有一個名爲* button0 *的按鈕。您需要聲明並在Interface Builder中將其連接起來。爲了避免混淆,請嘗試將IBActions命名爲button0Tapped,例如 – leandrodemarco

+0

非常感謝您的澄清:) – avtomate