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

我该怎么做呢?


当前回答

在objective-C中,创建一个类别方法脱离UIView类。

- (void)removeAllSubviews
{
    for (UIView *subview in self.subviews)
        [subview removeFromSuperview];
}

其他回答

使用Swift UIView扩展:

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

在monotouch / xamarin。这对我来说很管用:

SomeParentUiView.Subviews.All(x => x.RemoveFromSuperview);

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

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

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

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

为了从父视图中移除所有子视图:

NSArray *oSubView = [self subviews];
for(int iCount = 0; iCount < [oSubView count]; iCount++)
{
    id object = [oSubView objectAtIndex:iCount];
    [object removeFromSuperview];
    iCount--;
}