【问题标题】:Navigationbar disappears when i popToRootViewControllerAnimated当我 popToRootViewControllerAnimated 时导航栏消失
【发布时间】:2015-11-03 11:15:54
【问题描述】:

当我使用该功能时,我会返回到我的 RootViewController 但我的导航栏消失了。当我第一次运行该应用程序时,我的导航栏按预期工作,但是当我登录然后注销时,导航栏消失了。我正在使用“推断”的顶栏并使用 push Segues。

我试图通过添加来解决这个问题

navigationController?.navigationBar.hidden = falseviewWillAppearviewDidAppear 函数。 我还将它添加到 RootViewController 但它不起作用。 是我的注销功能以某种方式删除了导航栏还是我忘记了什么?

首选 Swift 语言。

【问题讨论】:

  • 您想从哪里获取代码?初始页面、登录、注册还是“受保护”页面?

标签: ios xcode swift uinavigationbar segue


【解决方案1】:

你不应该使用

navigationController?.navigationBar.hidden = false

你应该使用

navigationController?.setNavigationBarHidden(false, animated: true)

【讨论】:

  • 感谢您的提示,您是否知道导航栏自行禁用的问题是什么?
【解决方案2】:

这个问题可能不是最聪明的,但我只是通过简单地将注销功能和注销按钮与导航控制器视图连接而不是“嵌入”导航控制器的“主页”来解决它。当我将注销按钮与“主页”连接时,它没有加载导航控制器设置等,它只加载一次,因为它是初始视图控制器。我希望没有人会像我一样犯同样的错误。 :)

【讨论】:

    【解决方案3】:

    也许您的根视图控制器设置为在导航控制器条目之前显示的控制器?如果是这样,在进入导航控制器时,您应该将导航控制器设置为根视图控制器。否则,如果您希望将视图添加到您使用的导航堆栈中,我建议您在转换视图时使用

    self.navigationController?.pushViewController(viewController, animated: true)
    

    然后弹回控制器,您可以使用

    self.navigationController?.popToViewController(viewController, animated: true)
    

    或者,如果根视图控制器位于导航堆栈中,并且您希望返回到此,则使用

    self.navigationController?.popToRootViewController(animated: true)
    

    当然,动画布尔值是您个人的选择,而“viewController”是您想要推送到导航堆栈或弹回的视图控制器。我发现使用 push 和 pop 来实现导航堆栈比使用 push segues 好很多。

    【讨论】:

    • 当 push 或 pop 时,我使用了“Viewcontroller”的名称,还是只使用根据堆栈顺序排列的名称?
    • 还有没有可能我可以设置一个 rootviewcontroller 让它永远不会改变?
    【解决方案4】:

    您可能还需要设置委托。因此,在您的 viewWillAppear 方法中添加这些行。它对我有用。

    self.navigationController.navigationBar.hidden = NO;
    [self.navigationItem setHidesBackButton:NO animated:YES];
    self.navigationController.delegate = self;
    

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多