2010-02-22 98 views
2

我有一個關於UIViews標籤的問題。 是否有可能創建自己的標籤,如myview.tag =「main」或類似的東西?有關UIVIEW標籤的問題objective-c

我在問,因爲我的意見是在代碼中創建的,而不是用nib文件創建的。在加載容器視圖並完全解析xml文件後,我需要能夠獲取子視圖和更新值。

了一下週圍挖後,我讀了使用viewWithTag是做一個好辦法這個

回答

4

是的,你可以做,在你的代碼,它是一種常見的技術。

但是,UIView標籤是一個整數。所以你可能想要枚舉或定義一些可讀的內容,例如 #define kMySuperViewTag 1或enum {kMySuperViewTag,kMyNotSoSuperViewTag,...};

+0

嘿嘿涼,謝謝。 如何將標籤與視圖關聯? – dubbeat 2010-02-22 13:53:50

+0

myView.tag = kMySuperViewTag; //(使用定義或枚舉解釋) – Till 2010-02-22 13:55:04

+0

兆!非常感謝 – dubbeat 2010-02-22 13:56:01

0

您可以將指針存儲在UIView的標籤屬性中。你應該把它轉換爲int。您還應該知道在訪問標籤屬性時應該如何轉換標籤屬性。

實施例:

UIView * myView = [[UIView alloc] init]; 

myView.tag = (int)@"main"; 

//Later, you can access the string like so: 

NSString * string = (NSString*)myView.tag; 

//string now points to the string literal @"main". 

這可能將失敗,64位指針。

+0

這是我見過的最危險的建議。你的意思是將4個字節的字符串編碼爲整數值?或者你建議使用指針地址作爲標籤?第二個意味着內存泄漏,可能 - 例外 - 取決於編譯器。第一個 - 爲什麼不使用超過任何可能的超視圖子視圖的真正的大值,以確保它是獨一無二的? – ETech 2015-06-04 19:33:24

+0

@「main」是一個字符串文字,並且在程序運行期間有一個固定的內存地址。它不會改變,也不會被釋放。這不是內存泄漏。 – cncool 2015-06-05 17:31:49

+0

指針只要標籤是32/64位整數。 @「main」具有不變的內存地址。你是對的。在任何情況下,爲什麼不使用按位運算符,將0添加到最年輕的標記位而不是使用背景中的NSInteger標記屬性的對象?在你的情況下,你編譯文字,爲它保留內存,使用指針的文字。效率?和討論它一樣) – ETech 2015-06-08 10:49:56

2

我想你也可以使用類似

myview.layer.name="main"; 

,該區域是字符串