确定是否存在具有特定名称的子视图的实例

时间:2011-03-14 23:45:29

标签: iphone sdk uiwebview subview

确定具有特定名称的子视图的实例是否存在的最佳方法是什么?我有一个带有webview的应用程序,它以子视图的形式添加自定义活动指示器,使用webview委托方法webviewDidStartLoad和webviewDidFinishLoad添加和删除子视图。我认为这工作正常,但我注意到有些情况下webviewDidStartLoad和webviewDidFinishLoad不一定成对发射。例如,如果我开始加载webview然后将应用程序发送到后台(在webview完成加载之前)然后将其带回前台我将最终将活动指示器子视图永远不会被删除(因为我发送时)应用程序进入后台webviewDidFinishLoad永远不会被调用,所以当应用程序回到前台时webviewDidStartLoad会在旧实例的ontop上添加另一个视图实例。本质上,子视图会被添加两次,只删除一次。

所以我想要做的只是添加子视图(如果它尚不存在),只有在实际存在时才删除它。那么确定子视图是否已经存在或正在显示的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

您应该在具有webview委托方法的类的属性中跟踪子视图。如果属性为nil,则没有子视图,您应该设置它。删除它时,将属性设置为nil。

和/或实例化一次,添加/删除视图而不重新分配并一遍又一遍地分配它。

答案 1 :(得分:1)

每个视图都有一个属性“tag”,它是一个整数,可用于标识应用程序中的视图对象。有一个方法“viewWithTag”,它返回标签与指定值匹配的视图。