【原转】使用获取subview获取子view
通常我們在view層級里面對subView的操作可以通過兩種方式:1、保留一個subview的引用,然后在類中通過該引用對該subview 進行操作,但是要注意在適當的位置添加內存維護的代碼,退出前手動釋放。2、設置subview的Tag,讓后在要使用的時候,通過 viewWithTag獲取到相應的subview,這種方法比較簡潔,也不用自己去維護內存。
說直白點,就是父View通過tag獲取到子View,格式是:[父View viewWithTag:tag號碼];如下圖:[view viewWithTag:13].text獲取到subView2的內容。就是這么簡單。父類對子類下手
ViewWithTag: 通常采用深度遍歷優先的算法,返回第一個tag和給定Tag相等的subview。這就導致了一個當一個view的多個subview的tag相同的時候,我們通過該方法得到的view可能并不是自己想要的。
例子中代碼創建的view的層次圖如下:
?
例子中每個subview都是一個UILabel,而且設置了相應的內容。按鈕的響應函數的實現思路:首先隱藏所有類型為UILabel的 subview(排除UIButton,因為button需要一直顯示),然后根據指定的Tag獲取到相應的subview,該subview及其 superView的hidden屬性為NO。這樣就可以保證點擊按鈕的時候只顯示的是第一個tag和指定tag相等的subview。
為了驗證viewWithTag獲取subview的原理:
首先我在subview1中添加了兩個tag都為11的subview11和subview12。 運行程序可以,當我們點擊"Show Tag 11"按鈕的時候屏幕上將顯示“SubView11”,而非“SubView12”。同時不管你點擊幾次該按鈕,始終只顯示“SubView11”。這樣 可以看出來同一層級中獲取subview時候查找順序為index從小到大的原則,即位于相對下層的將首先被找到。
其次我還在subview1中添加了tag均為13的subview13,同時向view中添加了tag也為13的subview2,運行程序 點擊“Show Tag 13”按鈕,屏幕上將會顯示“SubView13”,而非“SubView2”。這可以驗證viewWithTag在搜索的時候遵循深度優先遍歷的原則, 即會首先查找最下層的view并遞歸查詢其subview。
綜上兩點我們可以看出來viewWithTag獲取subview的基本原則,即遵循深度優先,下層優先兩個原則。
轉載于:https://www.cnblogs.com/wengzilin/archive/2012/03/22/2411306.html
總結
以上是生活随笔為你收集整理的【原转】使用获取subview获取子view的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 分区
- 下一篇: 21个营销机构网站设计案例