iPhone: заставить из подпредставления удалить себя - PullRequest
1 голос
/ 23 июня 2010

В appdidfinishlaunch я загружаю tabbarcontroller как подпредставление, а после этого я загружаю другое представление

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

Я хочу закрыть этот верхний слой нажатием кнопки в подпредставлении, поэтому я настроил IBAction и попробовал разные вещи, чтобы принудительно закрыть фактическое представление:

// 1.
[self.view removeFromSuperview];

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


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

Так, как я могу вытолкнуть это подпредставление из окна?

веселит Simon

1 Ответ

6 голосов
/ 23 июня 2010

Вы могли бы сделать пару вещей. Одним из способов было бы назначить уникальный тег представлению и получить его позже с помощью этого тега, поэтому:

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

// later

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

Другой вариант - перебирать подпредставления окна, пока не найдете тот, который является экземпляром вашего уникального класса, а затем удалить его. Итак:

MySubView* mySubView = nil;
for( UIView* view in [[delegate window] subviews] ) {
  if( [view isKindOfClass:[MySubView class]] ) {
    mySubView = (MySubView*)view;
    break;
  }
}
[mySubView removeFromSuperview];
...