前几天遇到一个奇怪的bug,视图A中有一个 PageControl 控件,每当通过 NavigationController 将B视图 push 进去后,再回到A视图时发现 PageControl 控件就消失了。经过调试发现其已经被释放了。后来在一篇博客(【博客A】)中找到了灵感。
原因是我导航栏上的BarButton是自定义的,并设置了tag为1,当视图切换时通过viewWithTag找到它并将其从父视图中删除,但是在xib文件中不小心将PageControl控件的tag也设置为了1,结果导致先viewWithTag先找到了PageControl。使用tag时稍不留神可能就重复了,因此我建议将需要用到的tag都定义为常量放在统一的地方,在代码中使用这些常量而不是直接赋值数字。这样可以方便管理并避免重复。
另外【博客A】中建议tag设置较大的值,较小值是可能是系统保留使用,我在官方API中简单找了一下,并未找到相关说明,保险起见还是从较大值开始使用吧,我从101开始使用。
参考:
【博客A】:http://blog.csdn.net/smking/article/details/8590547