2009-11-01 16 views
0

得到Interface Builder的名稱。如果我的名字在Interface Builder一個小部件,然後我寫接收點擊該按鈕事件的方法:如何從ID

- (IBAction)btnTouchDown:(id)sender 
{ 
    // how can you identify the button here, 
    // if several different buttons map 
    // their "Touch" event to this same function? 
    // I know you can look at its text but that seems really clumsy 
    // can I somehow get its INTERFACE BUILDER NAME? 

    // I named each uniquely in interface builder, 
    // under "Identity"/"Name" 
    // Or is my only recourse to tie EACH BUTTON to its own handler function? 
} 

回答

1

點擊的按鈕關聯界面生成器,按CMD + 2(或在信息對話框中,第二個選項卡),並從yourView.xib窗口觸摸的內心文件的所有者拖動圓,然後它會讓你選擇的方法之一,其有- (IBAction) method:(id)sender簽名。選擇一個你想要關聯的按鈕:)

你說你不想爲每個按鈕做一個方法,但實際上這是我認爲最好的方法,而不是有一個巨大的單片方法處理每個按鈕並每次檢查它們是哪一個。使用上面提到的過程,您可以特別將處理程序方法綁定到特定的按鈕,保持事物的美觀,整潔和合理。

如果您確實想要這樣做,您還可以測試標籤號碼

+0

但我想使用_the same_函數來處理按鈕。我不能在我的事件處理程序中使用IF語句並檢查「哪個按鈕被按下」這種方式? – bobobobo 2009-11-01 03:53:08

+0

我在最近的編輯中添加了這個。你可能會認爲這是一個簡單的方法,但是如果你有不同的方法處理不同的邏輯路徑,那就容易多了。這樣,一個大功能就不會被按鈕的處理程序分支之一的錯誤搞亂。它更易於維護。但就像我說的,如果你真的想檢查標籤屬性。你說的檢查文本笨拙(並且不必要的昂貴)是正確的,但關於使用一個處理所有按鈕的大方法也可以這麼說。 – 2009-11-01 03:58:30

+0

請超級大膽的單詞__tag number__:D – bobobobo 2009-11-01 04:56:42

1

你必須定義按鈕爲實例變量在你的視圖控制器中,然後使用IBOutlet編譯指示讓IB知道它。因此,例如,你可以這樣做在您的視圖控制器:

UIButton IBOutlet *mybutton; 

定義它像這樣它會在你的IB連接出現後,你可以將它與相應的按鈕

+0

這是IBOutlet UIButton * mybutton;我認爲。 – 2009-11-01 03:48:22

+0

實際上,順序與大多數修改器無關 – ennuikiller 2009-11-01 04:08:18