2011-08-12 41 views
0

對於需要管理的每個IBOutlet,您都需要有一個指針,所以還需要有一個屬性。大多數時候屬性需要合成,然後在deallloc和viewDidUnload中都釋放。所以實際上,你需要重複編寫一小段代碼。你得到的是易於使用和清晰的代碼。現在,通過[self.view viewWithTag:]使用和訪問來自IB的對象可以節省一點點代碼空間,但由於需要記住或檢查IB是否有對象標記,因此可以省略一點點。那麼,爲什麼有人會打擾使用viewWithTag?您何時使用viewWithTag而不是IBOutlet屬性訪問IB對象?

回答

1

在我的情況下,我偶爾需要動態添加按鈕到視圖,並且需要知道哪個按鈕被按下,或者回想其他按鈕。

所以,我可以做的:

UIButton *desiredButton = [myView.viewWithTag:theTag] 

我用聲明枚舉按鈕類型(或任何視圖類型),這樣我可以有把握地分配和後來回憶說:

typedef enum { 
    ButtonTypeDelete = 1, 
    ButtonTypeCancel = 2, 
    ButtonTypeAccept = 3, 
    .... 
    .. 
} ButtonType 
0

您可以在任何地方使用它,您不會從NIBS加載接口。 我個人從來沒有使用過interfacebuilder,通常它不會存儲指向你創建的所有子視圖的指針(這可能很多),但是爲它們加上標籤並稍後使用它們的標籤來識別它們。例如,我在UITableView的headerview中使用這種技術,我必須根據用戶輸入更改它。

1

有標籤的許多用途,也不一定對每個視圖元素都有出口。

  1. UITextfields在長形式填寫,這裏的標籤可以被用來自動將光標移動到下一個字段
  2. 甲相同IBAction爲可以連接到多個按鈕,動作可進行基於標籤。

思考如果我應該讓這個答案成爲一個wiki,以便其他人可以爲它做出貢獻。將等待其他人把他們的答案放在這裏。

+0

第2點恰好顯示了我處理按鈕動作的首選方法之一。我忘了在我的答案中提到。 – Leonardo