【问题标题】:How to hide Navigation Controller in Root View?如何在根视图中隐藏导航控制器?
【发布时间】:2013-10-25 15:53:34
【问题描述】:

请帮我在根视图中隐藏导航控制器。我找到了在我需要的每个视图控制器中编写[navigationController setNavigationBarHidden:YES] 的解决方案。好吧,它只是第一次工作:我运行应用程序,在根视图中我没有导航,然后我转到第二个视图 - 出现导航,好的。但是然后我在导航控制器中按“返回”,从根视图导航并没有消失。我与xib一起工作。

【问题讨论】:

    标签: ios objective-c uinavigationcontroller navigation xcode5


    【解决方案1】:

    在根视图控制器中

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

    在第二个视图中(在 rootViewController 旁边)

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

    【讨论】:

      【解决方案2】:

      试试这个

      在所有视图控制器上使用这行代码

      [navigationController setNavigationBarHidden: YES animated:YES]; 
      

      如果不需要动画,您可以执行动画:NO 并将此代码添加到 viewDidLoad 或放入 viewWillAppear 或 viewDidAppear。

      你的情况

      [navigationController setNavigationBarHidden:YES animated:NO];
      

      在你的 rootViewController 上, 和

      [navigationController setNavigationBarHidden:NO animated:YES]; 
      

      在您的其他视图控制器上

      【讨论】:

        【解决方案3】:

        隐藏导航栏所有视图控制器的视图将出现的方法。

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

        【讨论】:

          【解决方案4】:

          我相信你正在使用标签栏控制器。

          您的代码适用于第一个视图控制器,因为您只有那里的代码。对于第二个视图控制器,它是默认设置,因此对于第二个视图控制器,您会看到导航栏。

          要隐藏所有视图控制器的导航栏,请将隐藏代码放入所有视图控制器 viewWillAppear

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

          【讨论】:

          • 看来你写这篇文章的时间最长 :)
          【解决方案5】:

          对于 Swift 开发人员

          斯威夫特 4.2

          RootViewController.swift

          class RootViewController: UIViewController {
              override func viewDidLoad() {
                  super.viewDidLoad()
              }
          
              override func viewWillAppear(_ animated: Bool) {
                  self.navigationController?.setNavigationBarHidden(true, animated: false)
              }
          }
          

          NextViewController.swift

          class NextViewController: UIViewController {
              override func viewDidLoad() {
                  super.viewDidLoad()
                  self.navigationController?.setNavigationBarHidden(false, animated: false)
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多