【问题标题】:Hiding UINavigationBar in iOS7 while poping a Controller在弹出控制器时隐藏 iOS 7 中的导航栏
【发布时间】:2014-03-05 09:37:06
【问题描述】:

所以我有两个 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% 的视图都可见:

将代码放到viewDidDisappear 也无济于事,因为NavBar 会留在视图中(可能是因为它从未被调用过)。这不是我需要的:

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

【问题讨论】:

  • 试试 viewdiddisappear
  • @KumarKl 查看我在帖子上的编辑,已经这样做了,但无济于事。
  • 如果你能把它的图片或截图,那就太好了。
  • 检查是否有回调方法在完成滑动后被调用,如 didFinishSliding:。如果是这样,请在该方法中添加导航栏隐藏/显示逻辑
  • @Ab'initio 这正是我要找的,但我还没有找到。

标签: ios cocoa-touch ios7 uikit uinavigationbar


【解决方案1】:

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

应该使用[[self navigationController] setNavigationBarHidden:NO animated:YES] 而不是self.navigationController.navigationBarHidden = NO - 这与iOS7interactivePopGestureRecognizer 完美配合,这是新animatedTransitions API 的一部分。希望这对将来的人有所帮助。

【讨论】:

    【解决方案2】:

    删除VC2中的self.navigationController.navigationBarHidden = YES;- (void)viewWillDisappear:(BOOL)animated

    放在VC1- (void)viewDidAppear:(BOOL)animated

    我觉得应该可以满足你的要求

    谢谢,

    萨提亚

    【讨论】:

    • 也没有帮助。令人惊讶的是,目前还没有好的解决方案。
    猜你喜欢
    • 2014-10-26
    • 2014-06-06
    • 2012-04-09
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多