【问题标题】:Hide/show status bar for specific view controllers in PageViewController [closed]隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]
【发布时间】:2014-10-28 23:38:52
【问题描述】:

我有一个包含 3 个视图控制器的 UIPageViewController。我想隐藏前 2 个视图控制器的状态栏并显示最后一个视图控制器的状态栏。最好的方法是什么?

【问题讨论】:

    标签: ios objective-c cocoa-touch uipageviewcontroller


    【解决方案1】:

    在你的 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。知道为什么吗?
    • 首先你可以对self.pageViewController做nil检查,如果是nil,那么你必须找到你的pageViewController在哪里,然后把方法放在创建你pageViewController的控制器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2017-11-14
    • 2010-12-20
    • 2013-09-25
    • 2014-02-21
    相关资源
    最近更新 更多