Как удалить все, что видно в текущем представлении, а затем отобразить другое представление? - PullRequest
0 голосов
/ 13 апреля 2011

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

-(void)estimateButtons:(NSString *)text andFrameX:(int)x andFrameY:(int)y andFrameW:(int)w andFrameH:(int)h 
{
    estimate = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    estimate.frame =CGRectMake(x,y,w,h);
    //[estimate setTitle:text forState:UIControlStateNormal];
    UIImage * buttonImage = [UIImage imageNamed:@"button_green_estimate.png"];
    UIImage * strechableButtonImage = [buttonImage stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [estimate setBackgroundImage:strechableButtonImage forState:UIControlStateNormal];
    [estimate addTarget:self action:@selector(estimateSelected:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:estimate];
}

-(void)estimateSelected:(UIButton *)b
{
    [self.view removeFromSuperview];    
    graph = [[SFNDoorBarGraphVC alloc]initWithNibName:@"SFNDoorBarGraphVC" bundle:nil];
    [graph.view setCenter:CGPointMake(350, 660)];
    [self.view addSubview:graph.view];
}

С помощью этого кода он удаляет все, но не отображает содержимое моего нового представления, которое представляет собой график.

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Проблема в строке:

[self.view removeFromSuperview];    

поэтому, когда вы:

[self.view addSubview:graph.view];

представление графика добавляется в представление, которое не входит в иерархию представлений.

попробуйте это:

NSArray *sViews = [self.view subviews];
[sViews makeObjectsPerformSelector:@selector(removeFromSuperview)];

РЕДАКТИРОВАТЬ: Добавление согласно запросу в комментариях.

NSArray *sViews = [self.view subviews];
for (UIView *sv in sViews)
{
     if (![sv isEqual:viewToSave])
     {
           [sv removeFromSuperview];
     }
}
1 голос
/ 13 апреля 2011

Получить подпредставления вашего текущего контроллера представления, используя

[self.view subviews];

Возвращает массив подпредставлений. Вы можете просмотреть их, и для каждого просмотра вы можете позвонить:

[currView removeFromSuperview];

где currView будет ссылкой на подпредставление во время цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...