2011-08-31 78 views
-1

討論。這是更優選的:IBAction按鈕按

與發送者A單一IBAction爲和一堆if語句 例如:if (sender == self.whichbuttonpressed)

單個IBAction爲與發送方和switch語句 例如:switch (send.tag) //短手以便於閱讀

對每個按鈕的IBAction。

討論可以說我們在XIB文件中有6個或更少的按鈕。

感謝

PS使我相信你的奶奶正在看你的反應所以沒有嘲諷請,是真實的。

+2

作爲一個詼諧自負的智能屁股,我特此告訴你:「堆棧溢出是專業和愛好者程序員」。你的祖母是專業的程序員嗎? – Kheldar

+0

誰首選?不同的結構在不同的情況下是有意義的,使用與你的用例最匹配的結構。 – codelark

+0

我很高興你認出你自己。謝謝。 – axe

回答

1

我更喜歡使用標籤,所以

單IBAction爲與發件人和switch語句前:開關(send.tag)//人手不夠,爲便於閱讀

最後的辦法如果針對不同按鈕的動作顯着不同,則是合理的

1

絕對是每個按鈕的IBAction。清潔。簡單。使您能夠添加或刪除操作或按鈕,而無需編輯,並且可能會將錯誤引入代碼中以執行其他操作。

+0

我其次。它更加模塊化。 – TommyG

+0

我傾向於同意你的看法,但這是一個非常廣泛的問題,很大程度上取決於精確的用戶界面和應用程序。我認爲這是目前的形式不能回答的問題,並沒有帶來太多...... – Kheldar

+0

@Kheldar - 是的。這對StackOverflow來說並不是很好,因爲他說他正在尋找討論,但是...... –

2

你的實現依賴於你的應用程序,但考慮到這個..

說你是實施數字鍵盤,10個鍵(0-9)。按下每個按鈕時唯一的區別是數字代表。所以,如果你每個按鈕的標籤設置爲數字值的按鈕應該代表,處理10個按鈕與一個IBAction爲方法變得微不足道:

 
    -(IBAction)buttonPress:(id)sender 
    { 
     UIButton *b = (UIButton *)sender; 
     int value = b.tag; 

     // Do something with value... 
    } 

我已經用這種方法適用於各種情況下單視圖包含許多按鈕,這些按鈕基本上都是做同樣的事情,但可以通過爲每個按鈕分配一個唯一的標記而在幕後進行區分。

如果您有許多按鈕的視圖,但它們彼此不相關,那麼每個按鈕都應該有它自己的IBAction方法。在這種情況下這樣做可以讓每個按鈕的操作的獨特實現更具可讀性和可維護性。

1

我其實是你列出的第二和第三個。標籤肯定比一堆if語句更容易使用。如果我在一個視圖上有一堆完全不相關的按鈕,我通常使用單獨的IBActions。如果它們彼此相關,那麼我使用1 IBAction,所以我不必重複自己。

實施例:

  1. 登錄並註冊按鈕:不同IBActions。一個需要推送一個VC,另一個需要進行web服務調用以進行身份​​驗證。
  2. 麪包屑。在我現在正在開發的應用程序中,我們有一個麪包屑導航欄,這是用戶必須按順序完成的步驟。我使用1個IBAction來處理這些問題,因爲它們的狀態以一致的方式變化,並且它們都基本上執行相同的操作(在窗體中相應的視圖中交換)。