【发布时间】:2014-10-28 23:38:52
【问题描述】:
我有一个包含 3 个视图控制器的 UIPageViewController。我想隐藏前 2 个视图控制器的状态栏并显示最后一个视图控制器的状态栏。最好的方法是什么?
【问题讨论】:
标签: ios objective-c cocoa-touch uipageviewcontroller
我有一个包含 3 个视图控制器的 UIPageViewController。我想隐藏前 2 个视图控制器的状态栏并显示最后一个视图控制器的状态栏。最好的方法是什么?
【问题讨论】:
标签: ios objective-c cocoa-touch uipageviewcontroller
在你的 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];
}
}
}
【讨论】:
prefersStatusBarHidden 中访问 self.pageViewController.viewControllers 时,它返回 nil。知道为什么吗?