2010-03-23 63 views
-1

我想看看被點擊,所以我可以瓶坯正確的邏輯的按鈕。幫助與iPhone按鈕按下

這是按鈕的代碼:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(270, 423, 60, 60)]; 
[button addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[button setBackgroundImage:[[UIImage imageNamed:@"refreshicon.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal]; 
button.tag = 1; 

UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 423, 60, 60)]; 
[button2 addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[button2 setBackgroundImage:[[UIImage imageNamed:@"login.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal]; 
button2.tag = 2; 

[self.navigationController.view addSubview:button]; 
[self.navigationController.view addSubview:button2]; 

這是我如何調用buttonPressedAction

- (void)buttonPressedAction:(id)sender 
{ 
UIButton* button = (UIButton*)sender; 

if(button.tag == 1) 
{ 
    NSLog(@"1"); 
}else 
{ 
    NSLog(@"2"); 
} 
} 

但是當我使用NSLog看到發件人值是什麼,它崩潰。

對正在發生的事情以及如何糾正它有什麼建議?

現在更正:O)謝謝!

+1

什麼是崩潰?無法識別的選擇器,還是別的? – 2010-03-23 21:36:10

+0

從什麼時候UIButton有一個'value'方法? – Chuck 2010-03-23 21:42:54

+0

我也懷疑一個無法識別的選擇器。你期待[發送者值]返回什麼?據我所知,UIButton沒有像這樣的屬性。 – 2010-03-23 21:44:36

回答

2

正如其他人指出,UIButton的不具有價值屬性。我想你正試圖檢測哪個按鈕被點擊。這裏有兩種方法可以做到這一點:

  1. 使用tag屬性每個按鈕一個。即button1.tag = 1,button2.tag = 2.然後,您可以測試用if(sender.tag == 1)等點擊了哪個按鈕。您可以引入數字的常量,以使代碼更具可讀性。

  2. 如果你到按鈕的引用,您可以檢查是否參考相等。例如:if(sender == self.button1)

+0

真棒,謝謝! – StealthRT 2010-03-23 22:20:20

+0

這是我寫的重複... – 2010-03-23 23:18:08

+0

@Shaggy Frog:猜猜我們在同一時間寫它,有時會發生 – 2010-03-23 23:51:54

0

也許最好的辦法是給那個做不同的事情不同的操作按鈕,但做不到這一點,你可以通過標籤區分它們。

0
- (void)buttonPressedAction:(id)sender 
{ 
    UIButton* button = (UIButton*)sender; 
    // do something 
} 

如果你保存的指針,你所創建的按鈕對象,你可以比較的指針。或者你可以設置按鈕的tag屬性,並使用它來切換行爲。

+0

太棒了,謝謝!我將這個代碼從Mads Mobaek添加到了這個,它工作得很好:o) – StealthRT 2010-03-23 22:20:46