1

を使用してスーパービューにサブビューがほとんど追加されていないアプリがあります

 [self.view addSubview:subview.view]; 

すべてが異なるビューコントローラであり、メイン/最初のビューに戻るためのカスタムの戻るボタンがあります。今まで問題ありません。

アプリの一部で、画面/サブビュー4から最初のビューにジャンプする必要があります。最初のビューを再作成します。(initWithNibNameとaddSubviewを使用)。これにより、アプリのメモリが増加します。

これを解決するには、すべてのサブビューを削除して、最初のビューを再度作成する代わりに、すでに存在しているが表示されていないため、最初のビューに戻りたいと思います。

これを達成する方法は?

助けてください。

前もって感謝します

4

2 に答える 2

2

特定のビューのタグ値を宣言し、必要に応じてすべてのビューを削除できます。

*for (UIView *subview in [self.view subviews])

{

if(view isKindOfClass:[UIViewクラス])

{

 if (subview.tag == 101 || subview.tag == 102) 

{

 [subview removeFromSuperview];

}

}

}*

この行の下にサンプル コードがあります。このコードでは、xib によって作成された「btn」ボタンが btnClicked メソッドを呼び出します。


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    myViewNew = [[UIView alloc] initWithFrame:CGRectMake(50, 40, 150, 150)];
    [myViewNew setTag:102];
    [myViewNew setBackgroundColor:[UIColor redColor]];

    myView = [[UIView alloc] initWithFrame:CGRectMake(50, 40, 150, 150)];
    [myView setTag:101];
    [myView setBackgroundColor:[UIColor blueColor]];

    btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn1 setFrame:CGRectMake(50, 50, 50, 50)];
    btn1.titleLabel.text = @"btn1";
    [myView addSubview:btn1];

    [btn1 addTarget:self action:@selector(btn11Pressed:) forControlEvents:UIControlEventTouchUpInside];

    btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn2 setFrame:CGRectMake(50, 50, 50, 50)];
    btn2.titleLabel.text = @"btn2";
    [myViewNew addSubview:btn2];

    [btn2 addTarget:self action:@selector(btn2Pressed) forControlEvents:UIControlEventTouchUpInside];


}

-(void)btn2Pressed
{
     for (UIView *subview in [self.view subviews])
     {
       if(view isKindOfClass:[UIView class])

       {

        if (subview.tag == 101 || subview.tag == 102) 
        {
            [subview removeFromSuperview];
        }
       }

      }
}

-(void) btn11Pressed:(id)sender
{
    [self.view addSubview:myViewNew];
}

-(IBAction)btnClicked:(id)sender
{
    [self.view addSubview:myView];
}
于 2012-06-19T04:50:13.637 に答える
0

すべてのサブビューを削除して最初に表示したい場合:

  //here view where you want remove all sub views containing in view
  [[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperView)];

サブビューを 1 つ表示したままにするには、次のようにします。

    NSArray *allSubViews = [self.view subviews];
    for(int i= 0; [allSubViews count];i++)
    {
      if(i !=0)
      {
          UIView *view = [allSubViews objectAtIndex:i];
          [view removeFromSuperview];
      }
    }
于 2012-06-19T04:17:20.890 に答える