我想知道如果 UIView 对象的单个实例同时添加为多个其他视图的子视图会发生什么。如果 UIView:removeFromSubview: 被调用,那么它是从所有超级视图中删除还是仅从当前显示的视图中删除?
背景:
我有一个类似状态栏的视图对象,需要在几个不同的其他视图中显示(每个其他视图由其自己的视图控制器管理)。
[即 a) 用户在一个视图中,b) 发生了一些事情使类似状态栏的视图出现,c) 用户切换到另一个视图 d) 状态栏在新视图中仍然可见 e) 状态栏会在一段时间后过期并从网站上消失。等等]
最初,我通过根据需要添加/删除它作为窗口的子视图来实现这一点,这是由单例管理的。然而,由于某些动画的一些复杂性,我将其添加为每个视图控制器的每个主视图的子视图。请注意,没有多个副本
当需要删除视图时,我调用它的 removeFromSuperview:,一切都运行良好。
但是我想知道删除视图的情况如何,是完全删除还是我需要做其他事情?
例如,视图可能会根据需要通过调用 addSubview 添加到 N 个视图控制器的视图中(如果该视图控制器实际启动,它只会添加到每个视图控制器)但是当它被删除时,我只调用 removeFromSuperview: 的视图当前加载的视图控制器,并非所有可能已添加到的视图控制器。
下次我导航到其中一个其他视图控制器时,即使我没有显式调用 removeFromSuperView,它也可以在没有视图的情况下正常显示。
正如我所说,一切正常,但是在我的脑海中,我觉得可能缺少一些东西?
希望这是可以理解的。