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

我该怎么做呢?


当前回答

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

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

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

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

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

其他回答

使用以下代码删除所有子视图。

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

使用Swift UIView扩展:

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

为了删除所有子视图

- (void)makeObjectsPerformSelector:(SEL)aSelector;

用法:

[self.View.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

该方法存在于NSArray.h文件中,并使用NSArray(NSExtendedArray)接口

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

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

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