在弹出控制器的同时隐藏iOS7中的导航栏

时间:2014-03-05 09:37:06

标签: ios cocoa-touch ios7 uikit uinavigationbar

所以我有两个UIViewControllers - VC1的属性为self.navigationController.navigationBarHidden = YES;,VC2的属性设置为NO

我在VC2中执行以下操作:

    - (void)viewWillAppear:(BOOL)animated{
        // Showing navigation bar for VC2
        self.navigationController.navigationBarHidden = NO;
    }

    - (void)viewWillDisappear:(BOOL)animated{
         // Hiding navigation bar for VC1
        self.navigationController.navigationBarHidden = YES;
    }

它完美隐藏了VC1的NavigationBar。但是,当我使用所谓的interactivePopGestureRecognizer(即用我的手指向右滑动UIViewController以弹出它)时,navigationBar立即隐藏,甚至95%的视图是可见的:

enter image description here enter image description here

将代码放到viewDidDisappear也无济于事,因为NavBar停留在视图上(可能因为它从未被调用过)。这是 NOT 我需要的东西: enter image description here enter image description here

在这种情况下,最好的解决方法是什么?当VC2向右滑出并且 出现在VC1上时,我们如何让navBar 保持

2 个答案:

答案 0 :(得分:1)

答案证明非常简单,虽然它在任何地方都没有记录(或者至少我还没有找到)。

而不是self.navigationController.navigationBarHidden = NO应该使用[[self navigationController] setNavigationBarHidden:NO animated:YES] - 这与iOS7的{​​{1}}完美配合,interactivePopGestureRecognizer是新animatedTransitions API的一部分。希望这可以帮助将来的某个人。

答案 1 :(得分:0)

删除VC2 self.navigationController.navigationBarHidden = YES;

中的- (void)viewWillDisappear:(BOOL)animated

将其放入VC1 - (void)viewDidAppear:(BOOL)animated

我认为,它可能符合您的要求

谢谢,

萨蒂亚