天天看點

iOS,viewWithTag搜尋機制正式開始寫在最後

好久沒寫東西了。廢話不多說。

正式開始

iOS中擷取一個想要的view的引用有很多方法,其中有一種是利用 viewWithTag:(NSInteger),填寫tag即可擷取tag。

看到方法時,我們很自然的想到,這個tag是類似uuid的東西,不同的view寫入不同的tag,之後通過tag獲得對應的view。

但是tag是我們自己手動添加的,如果有兩個view的tag相同,我們通過viewWithTag擷取的view到底是哪一個view呢?

要獲得答案,我也沒太想翻文檔,覺得試驗一下就好。

(由于在這發圖,稽核太麻煩,我就不發了(還是懶))

建立項目,打開IB,拖入幾個view,層級結構是這樣的:

View(self.view)

--View1

----View11

----View12

--View2

----View21

每個view都設定不同的背景顔色(沒有設定過黑色),設定不同的tag(我的tag都是200開頭,然後後面加數字)之後通過代碼:

    UIView *viewText = [self.view viewWithTag:2001];

    viewText.backgroundColor = [UIColor blackColor];

檢視哪一個view變黑了。

測試過程

1.View1為2001,View2為2001,查找2001,找到View1. 2.View1為2001,View11為2001,查找2001,找到View1. 3.View11為2001,View2為2001,查找2001,找到View11 4.View11為2001,View21為2001,查找2001,找到View11 我感覺查找的方式很簡單,就是通過視圖的層級結構查找,從最先添加的開始找,找到後就return了。簡單說就是上面我畫的層級結構,從上到下有5個view,查找方式就是從上到下找,找到就傳回。

寫在最後

純粹個人臆斷,沒有官方支援,如果有不對的地方,歡迎指正。