2011-12-07 43 views
2

有沒有辦法讓一個視圖上的所有UIButton使用相同的Touch Up Inside處理程序?或者可能使用Interface Builder將所有按鈕設置爲相同的代表?ios多個UIButtons使用一個處理程序(通過IB)

+0

我跑這個練習相當多的人從iOS遷移到Android和Flash。查看我的帖子以獲取更多信息。 –

回答

4

是的。控件將第一個按鈕拖到頭文件中,就像通常那樣,並創建動作。然後在.xib文件中,將每個其他按鈕連接到文件所有者,然後選擇您剛剛創建的相同操作。

在.xib文件中,查看「視圖」窗格上的「屬性」檢查器。您可以分別爲每個按鈕設置標籤。然後你可以使用下面的代碼...

- (IBAction)myButtons:(id)sender { 

    switch ([(UIButton *)sender tag]) { 
     case 0: 
      // code for first button 
      break; 

     case 1: 
      // code for second button 
      break; 

     case 2: 
      // code for third button 
      break; 

     default: 
      break; 
    } 
} 
2

是的,您可以將相同的IBAction附加到儘可能多的按鈕事件。啓動該動作的實際按鈕將作爲參數傳遞給IBAction,並且可以在此處將其區分(如果需要)。

2

從多個按鈕製作與目標/動作相同的IBAction沒有問題。只是多個的包起來,IB

的程序上的等價物是:

[button1 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside]; 

[button2 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside]; 
1

當然,爲什麼不呢?只需控制 - 從代碼中的每個按鈕拖動到相同的IBAction方法。然而,該方法必須包含一個大規模的if語句,以確定它是哪個按鈕以及它應該做什麼來響應,因爲您肯定不希望所有這些按鈕都執行相同的操作。

相關問題