【问题标题】:iOS - Hide navigation bar only on one view?iOS - 仅在一个视图上隐藏导航栏?
【发布时间】:2017-02-03 19:17:58
【问题描述】:

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

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

loginviewcontroller.m

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

当我这样做时,带有后退按钮的不需要的导航栏会被删除,我的另一个导航栏会被删除!伟大的。但是,当我然后导航到其他屏幕时,我的导航栏仍然隐藏(并且我希望它在我的用户通过 ViewControllerB 时出现)。

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

知道我该怎么做吗?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    添加这个:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        斯威夫特 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)
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-21
          相关资源
          最近更新 更多