当popToRootViewControllerAnimated时,导航栏消失

时间:2015-11-03 11:15:55

标签: ios xcode swift uinavigationbar segue

当我使用该功能时,我会被发送回我的RootViewController,但我的导航栏消失了。当我第一次运行应用程序时,我的导航栏按预期工作,但当我登录然后注销导航栏消失。我正在使用Top bar"推断"并使用push Segues。

我试图通过添加

来搞清楚

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

首选Swift语言。

4 个答案:

答案 0 :(得分:2)

你永远不应该使用

navigationController?.navigationBar.hidden = false

相反,你应该使用

navigationController?.setNavigationBarHidden(false, animated: true)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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

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

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

self.navigationController?.popToRootViewController(animated: true)

当然,动画布尔是你自己的个人选择和' viewController'作为视图控制器,您要么想要推送到导航堆栈,要么回弹。我发现使用push和pop来实现导航堆栈比使用push segues要好得多。

答案 3 :(得分:0)

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

var grapharea = document.getElementById("barChart").getContext("2d");

grapharea.clear();

var myNewChart = new Chart(grapharea, { type: 'radar', data: barData, options: barOptions });