关于viewWithTag:方法的小Tips

关于viewWithTag:官方文档给出的说明为

This method searches the current view and all of its subviews for the specified view.

一般在一个View 下想调用其下多个子View时,为了方便可以通过给每个子View标记tag然后使用viewWithTag:tag方法直接调用。关于这个方法在使用中发现两个小Tips:

  1. viewWithTag检索tag的方法问题
    viewWithTag方法会对当前View和其子View进行搜索,查找符合tag的对象,但如果view和其多个子view中都含有相同tag值对象时,该方法会搜出哪一个呢?通过查找实验发现,ViewWithTag: 遵循深度优先,下层优先两个原则,返回第一个和给定tag相等的subview。这就导致了一个当一个view的多个subview的tag相同的时候,我们通过该方法得到的view可能并不是自己想要的。

  2. 给View设置的tag数不要太小
    对于tag值苹果将0-100留为自己使用。正如当使用[self viewWithTag:0]取View时得到的是View本身,因为tag值为0被苹果保留给自己View了。所以在设置子view的Tag值时,需要注意不要使用数值较小的Tag值,使用时建议加一个定值,可以有效避免因为tag值太小,而取到系统保留的view.

#define btnTag   1000
btnCancel.tag = btnTag+ Index;

你可能感兴趣的:(关于viewWithTag:方法的小Tips)