關(guān)于viewWithTag:官方文檔給出的說明為
This method searches the current view and all of its subviews for the specified view.
一般在一個(gè)View 下想調(diào)用其下多個(gè)子View時(shí),為了方便可以通過給每個(gè)子View標(biāo)記tag然后使用viewWithTag:tag方法直接調(diào)用。關(guān)于這個(gè)方法在使用中發(fā)現(xiàn)兩個(gè)小Tips:
viewWithTag檢索tag的方法問題
viewWithTag方法會(huì)對(duì)當(dāng)前View和其子View進(jìn)行搜索,查找符合tag的對(duì)象,但如果view和其多個(gè)子view中都含有相同tag值對(duì)象時(shí),該方法會(huì)搜出哪一個(gè)呢?通過查找實(shí)驗(yàn)發(fā)現(xiàn),ViewWithTag: 遵循深度優(yōu)先,下層優(yōu)先兩個(gè)原則,返回第一個(gè)和給定tag相等的subview。這就導(dǎo)致了一個(gè)當(dāng)一個(gè)view的多個(gè)subview的tag相同的時(shí)候,我們通過該方法得到的view可能并不是自己想要的。給View設(shè)置的tag數(shù)不要太小
對(duì)于tag值蘋果將0-100留為自己使用。正如當(dāng)使用[self viewWithTag:0]取View時(shí)得到的是View本身,因?yàn)閠ag值為0被蘋果保留給自己View了。所以在設(shè)置子view的Tag值時(shí),需要注意不要使用數(shù)值較小的Tag值,使用時(shí)建議加一個(gè)定值,可以有效避免因?yàn)閠ag值太小,而取到系統(tǒng)保留的view.
#define btnTag 1000
btnCancel.tag = btnTag+ Index;