当我的应用程序回到它的根视图控制器,在viewDidAppear:方法中,我需要删除所有子视图。

我该怎么做呢?


当前回答

如果你想移除UIView(这里是yourView)上的所有子视图,那么在你的按钮点击处写以下代码:

[[yourView subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)];

其他回答

在Swift中,你可以使用这样的函数式方法:

view.subviews.forEach { $0.removeFromSuperview() }

作为比较,命令式方法看起来像这样:

for subview in view.subviews {
    subview.removeFromSuperview()
}

这些代码片段只适用于iOS / tvOS,但在macOS上略有不同。

如果你正在使用Swift,它就像:

subviews.map { $0.removeFromSuperview }

它在理念上与makeObjectsPerformSelector方法相似,但是具有更多的类型安全性。

使用Swift UIView扩展:

extension UIView {
    func removeAllSubviews() {
        for subview in subviews {
            subview.removeFromSuperview()
        }
    }
}

从你的根控制器获取所有的子视图,并给每个子视图发送一个removeFromSuperview:

NSArray *viewsToRemove = [self.view subviews];
for (UIView *v in viewsToRemove) {
    [v removeFromSuperview];
}

试试swift 2.0

view.subviews.forEach { $0.removeFromSuperview() }