例如,我創建了一個名爲btn1-btn50的50個連續按鈕的視圖。如果我想要解決這些按鈕並在循環中對它們進行一些更改,那麼我如何使用字符串名稱來解決控件問題?如何在obj-c中動態地控制一個地址?
回答
在層次結構中獲取視圖的典型方法是調用[parentView viewWithTag:]來獲取視圖。如果您將按鈕標籤值從1改爲50,則可以使用它來訪問按鈕。
如果由於某種原因需要字符串,您將不得不創建一個具有名稱成員的UIButton自定義子類,爲該成員分配一個名稱,然後迭代通過視圖層次結構搜索自定義類的實例名稱與您的搜索條件相匹配。
你不能保證這些按鈕按順序排列在內存中,所以試圖使用指針算法可能已經沒有了。但是,你可以得到一個的NSView的所有子視圖與-subviews
,只是做一些與NSButtons:
for (NSView *view in [theView subviews]) {
if (![view isKindOfClass:[NSButton class]]) continue;
/// you got a button!
}
's/return/continue /'? – 2010-06-04 01:38:25
這可能工作,因爲我可以循環遍歷所有人尋找具有正確名稱的人,但沒有辦法傳遞一個字符串來檢索視圖沒有循環所有的人? – Smallinov 2010-06-04 01:42:59
@Georg,是的,謝謝!修復。 – kevingessner 2010-06-04 01:45:35
如果你給他們一個tag
,您可以使用-viewWithTag:
父視圖方便地訪問它們。
在你的View Contoller中添加一個NSMutableDictionary * buttonViews屬性。在viewDidLoad方法中,使用名稱字符串作爲鍵和按鈕作爲對象將每個按鈕添加到buttonViews。你必須使用viewWithTag:已經討論過才能獲得視圖。現在您可以使用字符串定位按鈕,並從收集方法和快速枚舉中受益。 Apple的Interface Builder文檔指出,IB中的「名稱」用於幫助在IB中識別對象,這有助於翻譯。
- 1. 動態地址
- 2. 如何刪除/更新「地址近似」來自地址控制
- 3. 如何動態創建具有多個地址的Google地圖?
- 4. 如何從另一個控制器生成操作地址?
- 5. 如何在iPhone中動態地將幀分配給控制器?
- 6. 爲什麼這會在控制檯中返回一個地址?
- 7. 如何去動態地複製一組控件?
- 8. 如何動態設置src地址?
- 9. 如何動態地更改Plupload網址
- 10. 如何動態地制定一個靜態文本列表
- 11. 控制動態加載的地址空間佈局
- 12. 如何獲取動態谷歌地圖網址(有靜態地圖網址)
- 13. 如何動態地建立一個gui
- 14. 如何動態地從一個ArrayList
- 15. 谷歌地圖動態地址
- 16. 如何動態地添加HTML裏控制中繼
- 17. 如何在Grails控制器中獲取客戶端IP地址?
- 18. 如何在Symfony2控制器中獲取外部IP地址?
- 19. 在java任務控制中的本地地址
- 20. 動態更改地址欄中的地址
- 21. Web服務,在WSDL地址動態地址
- 22. 我如何動態地將WPF控件更改爲另一個?
- 23. paypal動態返回地址
- 24. 動態數組的地址
- 25. 動態int指針地址?
- 26. 動態從地址 - 郵戳
- 27. 如何使用一個遙控器推送到另一個地址並從另一個地址拉出?
- 28. 動態地注入服務控制器
- 29. Angularjs動態地添加控制器
- 30. wxWidgets中的IP地址控制
你是什麼意思的按鈕*命名* btn1-btn50?你的意思是那些是他們的標題屬性?那些是你用來引用它們的變量的名字?這些是你與朋友討論按鈕時使用的暱稱?按鈕通常沒有名字,所以你的術語很混亂。 – Chuck 2010-06-04 01:58:46
[目標C的等價PHP的「變量變量」]的可能重複(http://stackoverflow.com/questions/2283374/objective-c-equivalent-of-phps-variable-variables) – 2010-06-04 02:02:36
查克 - 我的名字到界面生成器中的名稱,顯然有一個叫做name的屬性......它是否可以通過編程方式訪問,這基本上就是這個問題的關鍵。我認爲它可以總是在那裏爲組織在界面生成器,但它似乎應該能夠編程方式。然而,根據我所得到的答案,我猜測假設它不是。 – Smallinov 2010-06-04 03:18:57