Iphone删除子视图

Sha*_*K M 35 uitableview addsubview ios drop-down-menu

我有一个UINavigationController.在右上方我有一个按钮点击,我必须得到一个下拉表视图.我创建了另一个UIViewController类,使用xib并将其作为子视图添加到当前视图中.它应该出现在第一次点击并在第二次点击时消失.所有点击都会发生这种情况(打开视图和关闭视图).我写了这段代码,但不知道我哪里出错了.有人请帮忙

-(void)modalTableView
{
tableView1 = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];

for (UIView *subView in self.view.subviews)
{

    if ([subView isKindOfClass:[TableViewController class]]) 
    {

         [subView removeFromSuperview];
    }

    else 
    {
        [self.view addSubview:tableView1.view];

    }
  }

}
Run Code Online (Sandbox Code Playgroud)

我在这里失踪了什么?

编辑:TableViewController是我的UIViewController类的名称

Dam*_*amo 66

线索就在这里

for (UIView *subView in self.view.subviews)
Run Code Online (Sandbox Code Playgroud)

每个subView都是UIView类和你的测试

isKindOfClass:[TableViewController class]
Run Code Online (Sandbox Code Playgroud)

正在测试类TableViewController

我建议这样做的方法是标记你动态添加的视图,例如99 - 然后在你的循环中你可以通过它们的标记识别这些视图.

例如.

for (UIView *subView in self.view.subviews)
{
    if (subView.tag == 99) 
    {
        [subView removeFromSuperview];
    }
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*gch 11

Swift版本

这个答案适用于那些不熟悉Objective-C的人.它比问题更笼统.

要删除单个子视图:

subView.removeFromSuperview()
Run Code Online (Sandbox Code Playgroud)

要删除所有子视图:

for subView in self.subviews as [UIView] {
    subView.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)

来源:从父视图/超级视图中删除所有视图的最佳方法是什么?