【问题标题】:NavigationBar doesn't disappear after Show Detail segue在 Show Detail segue 之后 NavigationBar 不会消失
【发布时间】:2017-10-22 21:22:35
【问题描述】:

现在我有一个 viewController(A),它是 Navagation Controller 的根视图控制器,然后是 Tab Bar Controller,我想从它执行 segue 到另一个 viewController(B),完全取代A

因此我应用了 show detail(replace),它在其他情况下效果很好。但是在这种情况下,当 A 连接到 B 时,导航栏和标签栏仍然存在。为什么会发生这种情况以及如何解决?

【问题讨论】:

    标签: ios swift uinavigationcontroller uitabbarcontroller segue


    【解决方案1】:

    在 viewController(A) 中你必须写

    override func viewWillAppear(_ animated: Bool) {
        self.tabBarController?.tabBar.isHidden = false
        self.navigationController?.navigationBar.isHidden = false
    }
    

    在 viewController(B) 中你必须写

    override func viewWillAppear(_ animated: Bool) {
        self.tabBarController?.tabBar.isHidden = true
        self.navigationController?.navigationBar.isHidden = true
    } 
    

    【讨论】:

      【解决方案2】:

      导航控制器管理视图控制器堆栈,为分层内容提供向下钻取界面。所以这不是问题,应该是这样。参考https://developer.apple.com/reference/uikit/uinavigationcontroller,

      要为整个应用隐藏它,您可以按照以下方式进行操作

      application:(UIApplication *)application didFinishLaunchingWithOptions: 方法中只需添加[[UINavigationBar appearance]setHidden:YES]; 它将隐藏整个应用程序的导航栏。

      并隐藏TabBarController 的底部栏

      - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
          if ([segue.identifier isEqualToString:@"To viewController(B)"]) {
              viewControllerB *destViewController = segue.destinationViewController;     
              // Hide bottom tab bar in the detail view
              destViewController.hidesBottomBarWhenPushed = YES;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-10
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多