我有一個關於UIViews標籤的問題。 是否有可能創建自己的標籤,如myview.tag =「main」或類似的東西?有關UIVIEW標籤的問題objective-c
我在問,因爲我的意見是在代碼中創建的,而不是用nib文件創建的。在加載容器視圖並完全解析xml文件後,我需要能夠獲取子視圖和更新值。
了一下週圍挖後,我讀了使用viewWithTag是做一個好辦法這個
我有一個關於UIViews標籤的問題。 是否有可能創建自己的標籤,如myview.tag =「main」或類似的東西?有關UIVIEW標籤的問題objective-c
我在問,因爲我的意見是在代碼中創建的,而不是用nib文件創建的。在加載容器視圖並完全解析xml文件後,我需要能夠獲取子視圖和更新值。
了一下週圍挖後,我讀了使用viewWithTag是做一個好辦法這個
是的,你可以做,在你的代碼,它是一種常見的技術。
但是,UIView標籤是一個整數。所以你可能想要枚舉或定義一些可讀的內容,例如 #define kMySuperViewTag 1或enum {kMySuperViewTag,kMyNotSoSuperViewTag,...};
您可以將指針存儲在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位指針。
這是我見過的最危險的建議。你的意思是將4個字節的字符串編碼爲整數值?或者你建議使用指針地址作爲標籤?第二個意味着內存泄漏,可能 - 例外 - 取決於編譯器。第一個 - 爲什麼不使用超過任何可能的超視圖子視圖的真正的大值,以確保它是獨一無二的? – ETech 2015-06-04 19:33:24
@「main」是一個字符串文字,並且在程序運行期間有一個固定的內存地址。它不會改變,也不會被釋放。這不是內存泄漏。 – cncool 2015-06-05 17:31:49
指針只要標籤是32/64位整數。 @「main」具有不變的內存地址。你是對的。在任何情況下,爲什麼不使用按位運算符,將0添加到最年輕的標記位而不是使用背景中的NSInteger標記屬性的對象?在你的情況下,你編譯文字,爲它保留內存,使用指針的文字。效率?和討論它一樣) – ETech 2015-06-08 10:49:56
我想你也可以使用類似
myview.layer.name="main";
,該區域是字符串
嘿嘿涼,謝謝。 如何將標籤與視圖關聯? – dubbeat 2010-02-22 13:53:50
myView.tag = kMySuperViewTag; //(使用定義或枚舉解釋) – Till 2010-02-22 13:55:04
兆!非常感謝 – dubbeat 2010-02-22 13:56:01