iOS - 仅在一个视图上隐藏导航栏?

时间:2017-02-03 19:17:59

标签: ios objective-c

我有一个登录视图控制器,在成功登录后,将我的用户推送到另一个视图控制器(ViewControllerB)。话虽这么说,ViewControllerB嵌入在UINavigationController中,我已经用菜单按钮格式化了。

因为我正在使用来自登录视图控制器的push segue,所以这个segue会导致我的UINavigationBar被空白导航栏和后退按钮覆盖(不酷)。也就是说,我尝试使用以下代码从登录视图控制器隐藏导航控制器:

loginviewcontroller.m

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

当我执行此操作时,将删除带有覆盖我的其他导航栏的后退按钮的不需要的导航栏!大。然而,当我导航到其他屏幕时,我的导航栏仍然隐藏(我想让它在我的用户通过ViewControllerB后出现)。

我尝试在成功登录时使用模态segue,但当然,这使我无法在登录时导航到其他具有segues的屏幕。

知道如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

添加:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

答案 1 :(得分:1)

您应该从第一个Viewcontroller或loginViewController嵌入UINavigationController,在此ViewController中,您将隐藏导航栏,并且您可以取消隐藏导航栏的下一个viewController。它对我有用。

答案 2 :(得分:0)

swift 3

override func viewWillAppear(_ animated: Bool) {

                //for hide navigation bar in current view
    super.viewWillAppear(animated)

    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {

                //for unhide in navigation bar in next/previous view
    super.viewWillDisappear(animated)

    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}