【发布时间】:2012-06-19 03:48:20
【问题描述】:
我有一个应用程序,它使用
添加了几个子视图到 superview [self.view addSubview:subview.view];
所有都是不同的视图控制器,并且有自定义的后退按钮来返回主视图/第一个视图。到目前为止没有问题。
在应用程序的某些部分,我必须从屏幕/子视图 4 跳转到第一个视图,在那里我重新创建第一个视图。 (使用 initWithNibName 和 addSubview)。这会增加应用程序的内存。
为了解决这个问题,我想删除所有子视图并返回到第一个视图,因为它已经存在但不可见,而不是再次创建第一个视图。
如何做到这一点?
请帮忙。
提前致谢
【问题讨论】:
-
嗨@Mobility [[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperView)] 就足够了吗?它来自我的脑海,所以把它当作 sudo 代码而不是确切的代码语法。
-
@bennythemink 我想从视图层次结构中删除所有视图,而不仅仅是视图中的子视图。这也适用吗?
-
嘿@Mobility,如果您使用的是iOS5,您可以遍历所有子视图控制器,将它们从它们的父视图和[subViewController removeFromParentViewController] 中删除。这应该将它们从显示和层次结构中删除
-
我的应用支持 iOS 4.3 及更高版本。还有其他方法可以实现吗?
-
mmm... 可能会遍历子视图控制器,为每个子视图 removeFromSuperView,然后为 ARC 设置控制器 = nil 或 nil 并释放它,如果使用手动内存管理确保它没有被引用任何其他可能导致崩溃的地方。我认为这是正确的,我的大脑在深夜之后的那一刻被炒了,如果我不正确,社区会告诉我们:)
标签: iphone ipad memory-management uiview uiviewcontroller