2014-10-28 2 views
0

У меня есть UIPageViewController, который содержит 3 контроллера вида. Я хочу скрыть строку состояния для первых двух контроллеров представления и показать строку состояния для последнего контроллера представления. Каков наилучший способ сделать это?Скрыть/показать строку состояния для определенных контроллеров вида в PageViewController

ответ

2

В делегате вашего PageViewController добавьте это.

- (BOOL)prefersStatusBarHidden 
{ 
    PageContentViewController *controller = self.pageViewController.viewControllers[0]; 
    if (controller.pageIndex == 2) { 
     return NO; 
    } else { 
     return YES; 
    } 
} 

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed 
{ 
    if (completed) { 
     PageContentViewController *controller = self.pageViewController.viewControllers[0]; 
     NSUInteger pageIndex = controller.pageIndex; 

     // only update status bar when transition is between page 2 and page 3 
     if (pageIndex == 1 || pageIndex == 2) { 
      [self setNeedsStatusBarAppearanceUpdate]; 
     } 
    } 
} 
+0

По какой-то причине, когда я пытаюсь получить доступ к '' self.pageViewController.viewControllers' в prefersStatusBarHidden', он возвращает ноль. Любая идея почему? – thisiscrazy4

+0

Во-первых, вы можете выполнить проверку nil на self.pageViewController, если он равен нулю, тогда вам нужно найти, где находится ваш pageViewController, и поместить этот метод в контроллер, который создает ваш pageViewController. – gabbler

+0

Получил, спасибо! – thisiscrazy4