2015-07-14 1 views
0

Вот мой текущий экран:Как скрыть дочерние контроллеры, содержащиеся внутри UIViewController в iOS?

My Bookings screen

Этот экран состоит из UIViewController с программно созданных кнопок Current Bookings и Old Bookings. У меня есть логика о том, как сделать активным нажатие, добавив UIView в качестве подзадачи в UIButton.

Все пространство под кнопками занято представлением контейнера, в котором я хочу добавить разные UIViewControllers, на основе которых активна кнопка.

Первоначально, я делаю это, чтобы загрузить один из контроллеров отображения, когда появляется родительский вид,

DRMCurrentBookingsViewController *cbvc = [self.storyboard instantiateViewControllerWithIdentifier:@"CurrentBookingsController"]; 
[self addChildViewController:cbvc]; 
// 64 is the height of the navigation bar 
cbvc.view.frame = CGRectMake(0, 64+50, self.view.bounds.size.width, self.view.bounds.size.height-50); 
[container addSubview:cbvc.view]; 
[cbvc didMoveToParentViewController:self]; 

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

DRMCurrentBookingsViewController *newController = [self.storyboard instantiateViewControllerWithIdentifier:@"CurrentBookingsController"]; 
DRMOldBookingsViewController *oldController = [self.childViewControllers objectAtIndex:0]; 

     [oldController willMoveToParentViewController:nil]; 
     [self addChildViewController:newController]; 

     [self transitionFromViewController:oldController 
          toViewController:newController 
            duration:0.5 
            options:UIViewAnimationOptionTransitionNone 
           animations:^{ 
            // no further animations required 
            newController.view.frame = oldController.view.frame; 
           } 
           completion:^(BOOL finished) { 
            [oldController removeFromParentViewController]; 
            [newController didMoveToParentViewController:self]; 
           }]; 

Но я хочу мнения ребенка скользить слева направо или справа налево в зависимости от того, какая кнопка сливают, и я не хочу, чтобы выбрать предопределенный UIViewAnimationOption. Я даже не хочу исчезать во взглядах. Взгляды должны скользить от одного конца к другому.

Как я могу это достичь?

Спасибо за любую помощь.

+0

Вы хотите нажать viewController или добавить subView, если вы хотите добавить viewController, он не будет отображаться над двумя кнопками, поэтому я думаю, что вы добавите subview в качестве другого viewController view –

+0

, в каком направлении вы хотите переместить дочерний вид? – Anoop

ответ

0

Я не думаю, что «слева направо» и «справа налево» доступны как анимация в виде анимации. Я думаю, вам нужно использовать 2 вида контейнера и использовать метод [UIView animationWithDuration: для создания анимации «слева направо»

0

Поставлено. Так я это сделал:

DRMCurrentBookingsTableViewController *newController = [self.storyboard instantiateViewControllerWithIdentifier:@"CurrentBookingsController"]; 
    DRMOldBookingsTableViewController *oldController = [self.childViewControllers objectAtIndex:0]; 

    [oldController willMoveToParentViewController:nil]; 
    [self addChildViewController:newController]; 

    // I added these 
    CGRect newFrame = container.frame; 
    newFrame.origin.x -= self.view.bounds.size.width; 
    newFrame.size.width = self.view.bounds.size.width; 
    newController.view.frame = newFrame; 
    newFrame = container.frame; 
    newFrame.size.width = self.view.bounds.size.width; 

    [self transitionFromViewController:oldController 
         toViewController:newController 
           duration:0.25 
           options:UIViewAnimationOptionCurveEaseInOut 
          animations:^{ 
           // no further animations required 
           newController.view.frame = newFrame; 
          } 
          completion:^(BOOL finished) { 
           [oldController removeFromParentViewController]; 
           [newController didMoveToParentViewController:self]; 
          }]; 

Спасибо за помощь.

Смежные вопросы