1

appdidfinishlaunchで、タブバーコントローラーをサブビューとしてロードし、その後、他のビューをロードしています

MySubView * mySubView = [[MySubView alloc] init];
[window addSubview:mySubView];
[mySubView release];

サブビューのボタンクリックでそのtoplayerを閉じたいので、IBActionを設定し、実際のビューを強制的に閉じるためにさまざまなことを試みました。

// 1.
[self.view removeFromSuperview];

// 2.
id  *delegate = [[UIApplication sharedApplication] delegate];
[[[delegate view] objectAtIndex:0] removeFromSuperview];


//3.
[[[delegate window] view] removeFromSuperview];

では、どうすればこのサブビューをウィンドウからポップできますか?

サイモンを応援します

4

1 に答える 1

6

いくつかのことができます。1 つの方法は、ビューに一意のタグを割り当て、後でそのタグを使用して取得することです。

MySubView* mySubView = [[MySubView alloc] init];
[mySubView setTag:100];
[window addSubview:mySubView];
[mySubView release];

// later

[[[delegate window] viewWithTag:100] removeFromSuperview];

もう 1 つは、独自のクラスのインスタンスであるサブビューが見つかるまでウィンドウのサブビューを反復処理してから、それを削除することです。そう:

MySubView* mySubView = nil;
for( UIView* view in [[delegate window] subviews] ) {
  if( [view isKindOfClass:[MySubView class]] ) {
    mySubView = (MySubView*)view;
    break;
  }
}
[mySubView removeFromSuperview];
于 2010-06-23T02:37:06.650 に答える