【问题标题】:Unhiding the navigation bar after popping a UIPageViewController弹出 UIPageViewController 后取消隐藏导航栏
【发布时间】:2015-04-06 06:09:06
【问题描述】:

我在尝试取消隐藏应用中的导航栏时遇到了问题。我在 UIViewController 中创建了一个 UIPageViewController,如下所示:

//Hide the bar
self.navigationController.navigationBar.hidden=YES;

// Create page view controller
    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    self.pageViewController.dataSource = self;


    UIPageControl *pageControl = [UIPageControl appearance];
    pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
    pageControl.currentPageIndicatorTintColor = [UIColor colorWithRed:229/255.0 green:145/255.0 blue:217/255.0 alpha:1];
    pageControl.backgroundColor = [UIColor whiteColor];



    //Call our helper method
    StickerContentViewController *startingViewController = [self viewControllerAtIndex:0];
    //Need to pass the first one, don't put them all in here
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];


    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

    //setup
    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];

当我使用[self.navigationController popViewControllerAnimated:YES]; 弹出 UIViewController(包含 UIPageViewController 的那个)时,我无法让导航栏取消隐藏上一个屏幕。我尝试将self.navigationController.navigationBarHidden=NO; 放在viewWillDisappear、viewDidDissappear 中。我也尝试将它放在内容视图控制器中,但仍然没有运气。有人可以指点我在这里可能做错了什么吗?

【问题讨论】:

  • 尝试在上一屏ViewWIillAppear方法中设置导航栏隐藏=NO。
  • 试过了。没运气。我通常的取消隐藏和隐藏模式是在 viewDidLoad 方法中隐藏栏,然后在 viewWillDisappear 中取消隐藏。 UIPageViewController 似乎让它感到困惑..
  • viewWillAppear 每次加载 viewcontroller 时都会被调用,因此请尝试在此方法中启用
  • 我已经做到了。尝试将代码放在那里。虽然不起作用。它确实调用了 viewWillAppear 中的代码(我用 NSLog 进行了检查),但由于某种原因它不会取消隐藏导航栏。
  • 可能是因为子/父视图控制器设置?

标签: ios uinavigationbar uipageviewcontroller


【解决方案1】:

已修复,只是发布以防其他人有问题。当我应该使用self.navigationController.navigationBarHidden=YES; 时,我使用了self.navigationController.navigationBar.hidden=YES;。不知道有什么区别。无论如何,我在 viewDidLoad 中隐藏了该栏并在 viewWillDisappear 中取消隐藏它,它现在可以工作了。谢谢大家

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多